编程,将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>
- [lshang] 8个通用寄存器用了7个。。 如果先复制雇佣人数的话只能用bp中转 但是用bp就太不伦不类了。。 06/12 10:44
- [tily] 你先DIV算出“人均收入”,之后再复制“雇员数”好像跟我碰到一样的问题 就是先复制“雇员数”AX中的 06/11 21:48
- [lshang] 额 可能是因为型号不一样? Microsoft Windows [Version 6.1.76 06/06 17:19
- [lshang] 当前AX的值不就是2的8次方么? 1)ADD AX,AX AX = 2 ;2^1 JMP 06/06 17:13
- [游客] 写的不错,加油 06/06 17:05
- [游客] 写的不错,加油 06/06 17:04
- [lshang] right演示? 没懂 06/06 17:03
- [游客] 这样子是没有结果的。不行;请你思考:得到2的8次方,一共执行的多少次(运行了多少-t)? 06/06 16:59
- [游客] 只读存储器中的内容是不可改的,你的怎么可以呢? 下面是我电脑的运行结果: C:\masm5.0> 06/06 16:56
- [游客] right演示 06/06 16:49