汇编网首页登录博客注册
lshang的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
文章收藏

[2011-06-10 11:08] 实验七

编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。

——————————————————————————————————————————————

assume cs:code ,ds:data

data segment
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
        db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
        db '1993','1994','1995'                ;54H 
        
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000        ;54H
        
        dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
        dw 11542,14430,15257,17800        ;2AH
data ends

table segment
        db 21 dup ('year summ ne ?? ')
table ends

code segment

start:
        mov ax,data
        mov ds,ax
        mov ax,table
        mov es,ax
        
        xor bx,bx
        xor si,si
        xor di,di
        
        mov cx,21
S:
        mov ax,[si]
        mov es:[bx],ax
        mov ax,[si+2]
        mov es:[bx].2H,ax
        
        mov ax,54H[si]
        mov es:[bx].5H,ax
        mov dx,54H[si+2]
        mov es:[bx].7H,dx
        
        div word ptr 0A8H[di]
        mov es:[bx].0DH,ax
        
        mov ax,0A8H[di]
        mov es:[bx].0AH,ax
        
        add bx,10H
        add si,4H
        add di,2H
        loop S
        
        mov ax,4C00H
        int 21H

code ends
end start

————————————————————————————————————————————

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\masm5>masm test;
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987.  All rights reserved.


  50270 + 415458 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors

c:\masm5>link test;

Microsoft (R) Overlay Linker  Version 3.60
Copyright (C) Microsoft Corp 1983-1987.  All rights reserved.

LINK : warning L4021: no stack segment
c:\masm5>debug test.exe
-r
AX=0000  BX=0000  CX=027D  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=140A  ES=140A  SS=141A  CS=143D  IP=0000   NV UP EI PL NZ NA PO NC
143D:0000 B81A14        MOV     AX,141A
-d 141A:0
141A:0000  31 39 37 35 31 39 37 36-31 39 37 37 31 39 37 38   1975197619771978
141A:0010  31 39 37 39 31 39 38 30-31 39 38 31 31 39 38 32   1979198019811982
141A:0020  31 39 38 33 31 39 38 34-31 39 38 35 31 39 38 36   1983198419851986
141A:0030  31 39 38 37 31 39 38 38-31 39 38 39 31 39 39 30   1987198819891990
141A:0040  31 39 39 31 31 39 39 32-31 39 39 33 31 39 39 34   1991199219931994
141A:0050  31 39 39 35 10 00 00 00-16 00 00 00 7E 01 00 00   1995........~...
141A:0060  4C 05 00 00 56 09 00 00-40 1F 00 00 80 3E 00 00   L...V...@....>..
141A:0070  A6 5F 00 00 91 C3 00 00-C7 7C 01 00 81 24 02 00   ._.......|...$..
-u
143D:0000 B81A14        MOV     AX,141A
143D:0003 8ED8          MOV     DS,AX
143D:0005 B82814        MOV     AX,1428
143D:0008 8EC0          MOV     ES,AX
143D:000A 33DB          XOR     BX,BX
143D:000C 33F6          XOR     SI,SI
143D:000E 33FF          XOR     DI,DI
143D:0010 B91500        MOV     CX,0015
143D:0013 8B04          MOV     AX,[SI]
143D:0015 26            ES:
143D:0016 8907          MOV     [BX],AX
143D:0018 8B4402        MOV     AX,[SI+02]
143D:001B 26            ES:
143D:001C 894702        MOV     [BX+02],AX
143D:001F 8B4454        MOV     AX,[SI+54]
-g 10

AX=1428  BX=0000  CX=027D  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0010   NV UP EI PL ZR NA PE NC
143D:0010 B91500        MOV     CX,0015
-d es:0
1428:0000  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
1428:0010  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
1428:0020  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
1428:0030  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
1428:0040  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
1428:0050  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
1428:0060  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
1428:0070  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
-t

AX=1428  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0013   NV UP EI PL ZR NA PE NC
143D:0013 8B04          MOV     AX,[SI]                            DS:0000=3931
-t

AX=3931  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0015   NV UP EI PL ZR NA PE NC
143D:0015 26            ES:
143D:0016 8907          MOV     [BX],AX                            ES:0000=6579
-t

AX=3931  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0018   NV UP EI PL ZR NA PE NC
143D:0018 8B4402        MOV     AX,[SI+02]                         DS:0002=3537
-t

AX=3537  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=001B   NV UP EI PL ZR NA PE NC
143D:001B 26            ES:
143D:001C 894702        MOV     [BX+02],AX                         ES:0002=7261
-t

AX=3537  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=001F   NV UP EI PL ZR NA PE NC
143D:001F 8B4454        MOV     AX,[SI+54]                         DS:0054=0010
-t

AX=0010  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0022   NV UP EI PL ZR NA PE NC
143D:0022 26            ES:
143D:0023 894705        MOV     [BX+05],AX                         ES:0005=7573
-t

AX=0010  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0026   NV UP EI PL ZR NA PE NC
143D:0026 8B5456        MOV     DX,[SI+56]                         DS:0056=0000
-t

AX=0010  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0029   NV UP EI PL ZR NA PE NC
143D:0029 26            ES:
143D:002A 895707        MOV     [BX+07],DX                         ES:0007=6D6D
-t

AX=0010  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=002D   NV UP EI PL ZR NA PE NC
143D:002D F7B5A800      DIV     WORD PTR [DI+00A8]                 DS:00A8=0003
-t

AX=0005  BX=0000  CX=0015  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0031   NV UP EI PL NZ AC PO NC
143D:0031 26            ES:
143D:0032 89470D        MOV     [BX+0D],AX                         ES:000D=3F3F
-t

AX=0005  BX=0000  CX=0015  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0035   NV UP EI PL NZ AC PO NC
143D:0035 8B85A800      MOV     AX,[DI+00A8]                       DS:00A8=0003
-t

AX=0003  BX=0000  CX=0015  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0039   NV UP EI PL NZ AC PO NC
143D:0039 26            ES:
143D:003A 89470A        MOV     [BX+0A],AX                         ES:000A=656E
-t

AX=0003  BX=0000  CX=0015  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=003D   NV UP EI PL NZ AC PO NC
143D:003D 83C310        ADD     BX,+10
-t

AX=0003  BX=0010  CX=0015  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0040   NV UP EI PL NZ NA PO NC
143D:0040 83C604        ADD     SI,+04
-t

AX=0003  BX=0010  CX=0015  DX=0001  SP=0000  BP=0000  SI=0004  DI=0000
DS=141A  ES=1428  SS=141A  CS=143D  IP=0043   NV UP EI PL NZ NA PO NC
143D:0043 83C702        ADD     DI,+02
-t

AX=0003  BX=0010  CX=0015  DX=0001  SP=0000  BP=0000  SI=0004  DI=0002
DS=141A  ES=1428  SS=141A  CS=143D  IP=0046   NV UP EI PL NZ NA PO NC
143D:0046 E2CB          LOOP    0013
-p

AX=4588  BX=0150  CX=0000  DX=2580  SP=0000  BP=0000  SI=0054  DI=002A
DS=141A  ES=1428  SS=141A  CS=143D  IP=0048   NV UP EI PL NZ NA PO NC
143D:0048 B8004C        MOV     AX,4C00
-d es:0
1428:0000  31 39 37 35 20 10 00 00-00 20 03 00 20 05 00 20   1975 .... .. ..
1428:0010  31 39 37 36 20 16 00 00-00 20 07 00 20 03 00 20   1976 .... .. ..
1428:0020  31 39 37 37 20 7E 01 00-00 20 09 00 20 2A 00 20   1977 ~... .. *.
1428:0030  31 39 37 38 20 4C 05 00-00 20 0D 00 20 68 00 20   1978 L... .. h.
1428:0040  31 39 37 39 20 56 09 00-00 20 1C 00 20 55 00 20   1979 V... .. U.
1428:0050  31 39 38 30 20 40 1F 00-00 20 26 00 20 D2 00 20   1980 @... &. ..
1428:0060  31 39 38 31 20 80 3E 00-00 20 82 00 20 7B 00 20   1981 .>.. .. {.
1428:0070  31 39 38 32 20 A6 5F 00-00 20 DC 00 20 6F 00 20   1982 ._.. .. o.
-t

AX=4C00  BX=0150  CX=0000  DX=2580  SP=0000  BP=0000  SI=0054  DI=002A
DS=141A  ES=1428  SS=141A  CS=143D  IP=004B   NV UP EI PL NZ NA PO NC
143D:004B CD21          INT     21
-p

Program terminated normally
-q

c:\masm5>
评论次数(2)  |  浏览次数(686)  |  类型(实验任务) |  收藏此文  | 

[  tily   发表于  2011-06-11 21:48  ]

你先DIV算出“人均收入”,之后再复制“雇员数”好像跟我碰到一样的问题 就是先复制“雇员数”AX中的值被改变了 呵呵

[  lshang   发表于  2011-06-12 10:44  ]

8个通用寄存器用了7个。。
如果先复制雇佣人数的话只能用bp中转
但是用bp就太不伦不类了。。
所以就先复制人均收入了

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码