第八章实验7的第二种做法(不用栈做传递)
2009-08-28 00:30
218 查看
只用一个循环
调试过程:
assume cs:codesg datasg 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' dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 datasg ends table segment db 21 dup ('year summ ne ?? ') table ends stacksg segment db 16 dup (0) stacksg ends codesg segment start: mov ax,datasg mov es,ax mov ax,table mov ds,ax mov bx,0 mov si,0 mov cx,21 s0:mov di,0 ;copy the year data mov ax,es:[bx+di] mov ds:[si], ax mov ax,es:[bx+di+2] mov ds:[si+2],ax ;copy the income data add di,54h mov ax,es:[bx+di] mov ds:[si+5],ax mov ax,es:[bx+di+2] mov ds:[si+7],ax ;copy the count of employees add di,54h mov ax,bx mov bl,2 div bl mov bx,ax;这里主要的目的是把bx的值设置成该次循环中的一半。因为我们是让bx按两个字在增长,但是此处的雇员人数是按一个字来存放的,所以要把bx的值除以二。 mov ax,es:[bx+di] mov ds:[si+0ah],ax ;计算人均收入 mov ax,ds:[si+5] mov dx,ds:[si+7];这里很明显除数是16位的,而被除数是32位的,所以高16位放在dx中,低16位放在ax中。 mov di,ds:[si+10];拿到除数即雇员人数。 div di;做除法,商放在了ax中,余数放在了dx中 mov ds:[si+0dh],ax add si,10h;si加10h后指向下一行 add bx,bx;又要把bx的值恢复成本次循环的开始值。 add bx,4;把bx的值按2个字节增长。 loop s0 mov ax,4c00h int 21h codesg ends end start
调试过程:
-r AX=0000 BX=0000 CX=02A0 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=143C ES=143C SS=144C CS=1470 IP=0000 NV UP EI PL NZ NA PO NC 1470:0000 B84C14 MOV AX,144C -u 1470:0000 B84C14 MOV AX,144C 1470:0003 8EC0 MOV ES,AX 1470:0005 B85A14 MOV AX,145A 1470:0008 8ED8 MOV DS,AX 1470:000A BB0000 MOV BX,0000 1470:000D BE0000 MOV SI,0000 1470:0010 B91500 MOV CX,0015 1470:0013 BF0000 MOV DI,0000 1470:0016 26 ES: 1470:0017 8B01 MOV AX,[BX+DI] 1470:0019 8904 MOV [SI],AX 1470:001B 26 ES: 1470:001C 8B4102 MOV AX,[BX+DI+02] 1470:001F 894402 MOV [SI+02],AX -t AX=144C BX=0000 CX=02A0 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=143C ES=143C SS=144C CS=1470 IP=0003 NV UP EI PL NZ NA PO NC 1470:0003 8EC0 MOV ES,AX -t AX=144C BX=0000 CX=02A0 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=143C ES=144C SS=144C CS=1470 IP=0005 NV UP EI PL NZ NA PO NC 1470:0005 B85A14 MOV AX,145A -t AX=145A BX=0000 CX=02A0 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=143C ES=144C SS=144C CS=1470 IP=0008 NV UP EI PL NZ NA PO NC 1470:0008 8ED8 MOV DS,AX -t AX=145A BX=0000 CX=02A0 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=000A NV UP EI PL NZ NA PO NC 1470:000A BB0000 MOV BX,0000 -t AX=145A BX=0000 CX=02A0 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=000D NV UP EI PL NZ NA PO NC 1470:000D BE0000 MOV SI,0000 -t AX=145A BX=0000 CX=02A0 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=0010 NV UP EI PL NZ NA PO NC 1470:0010 B91500 MOV CX,0015 -d ss:0 14f 144C:0000 31 39 37 35 31 39 37 36-31 39 37 37 31 39 37 38 1975197619771978 144C:0010 31 39 37 39 31 39 38 30-31 39 38 31 31 39 38 32 1979198019811982 144C:0020 31 39 38 33 31 39 38 34-31 39 38 35 31 39 38 36 1983198419851986 144C:0030 31 39 38 37 31 39 38 38-31 39 38 39 31 39 39 30 1987198819891990 144C:0040 31 39 39 31 31 39 39 32-31 39 39 33 31 39 39 34 1991199219931994 144C:0050 31 39 39 35 10 00 00 00-16 00 00 00 7E 01 00 00 1995........~... 144C:0060 4C 05 00 00 56 09 00 00-40 1F 00 00 80 3E 00 00 L...V...@....>.. 144C:0070 A6 5F 00 00 91 C3 00 00-C7 7C 01 00 81 24 02 00 ._.......|...$.. 144C:0080 8A 03 03 00 7C 47 05 00-EB 03 09 00 CA 42 0C 00 ....|G.......B.. 144C:0090 18 0D 12 00 38 1F 1C 00-58 19 2A 00 28 44 39 00 ....8...X.*.(D9. 144C:00A0 28 F0 46 00 68 97 5A 00-03 00 07 00 09 00 0D 00 (.F.h.Z......... 144C:00B0 1C 00 26 00 82 00 DC 00-DC 01 0A 03 E9 03 A2 05 ..&............. 144C:00C0 D2 08 E9 0A C5 0F 03 16-22 20 16 2D 5E 38 99 3B ........" .-^8.; 144C:00D0 88 45 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .E.............. 144C:00E0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 144C:00F0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 144C:0100 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 144C:0110 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 144C:0120 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 144C:0130 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 144C:0140 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? -d ds:0 14f 145A:0000 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0010 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0020 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0030 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0040 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0050 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0060 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0070 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0080 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0090 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:00A0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:00B0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:00C0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:00D0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:00E0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:00F0 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0100 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0110 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0120 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0130 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? 145A:0140 79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20 year summ ne ?? -p AX=145A BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=0013 NV UP EI PL NZ NA PO NC 1470:0013 BF0000 MOV DI,0000 -p AX=145A BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=0016 NV UP EI PL NZ NA PO NC 1470:0016 26 ES: 1470:0017 8B01 MOV AX,[BX+DI] ES:0000=3931 -p AX=3931 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=0019 NV UP EI PL NZ NA PO NC 1470:0019 8904 MOV [SI],AX DS:0000=6579 -p AX=3931 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=001B NV UP EI PL NZ NA PO NC 1470:001B 26 ES: 1470:001C 8B4102 MOV AX,[BX+DI+02] ES:0002=3537 -p AX=3537 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=001F NV UP EI PL NZ NA PO NC 1470:001F 894402 MOV [SI+02],AX DS:0002=7261 -p AX=3537 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=145A ES=144C SS=144C CS=1470 IP=0022 NV UP EI PL NZ NA PO NC 1470:0022 83C754 ADD DI,+54 -pp ^ Error -p AX=3537 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0054 DS=145A ES=144C SS=144C CS=1470 IP=0025 NV UP EI PL NZ NA PO NC 1470:0025 26 ES: 1470:0026 8B01 MOV AX,[BX+DI] ES:0054=0010 -p AX=0010 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0054 DS=145A ES=144C SS=144C CS=1470 IP=0028 NV UP EI PL NZ NA PO NC 1470:0028 894405 MOV [SI+05],AX DS:0005=7573 -p AX=0010 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0054 DS=145A ES=144C SS=144C CS=1470 IP=002B NV UP EI PL NZ NA PO NC 1470:002B 26 ES: 1470:002C 8B4102 MOV AX,[BX+DI+02] ES:0056=0000 -p AX=0000 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0054 DS=145A ES=144C SS=144C CS=1470 IP=002F NV UP EI PL NZ NA PO NC 1470:002F 894407 MOV [SI+07],AX DS:0007=6D6D -p AX=0000 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0054 DS=145A ES=144C SS=144C CS=1470 IP=0032 NV UP EI PL NZ NA PO NC 1470:0032 83C754 ADD DI,+54 -p AX=0000 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=0035 NV UP EI PL NZ NA PO NC 1470:0035 8BC3 MOV AX,BX -p AX=0000 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=0037 NV UP EI PL NZ NA PO NC 1470:0037 B302 MOV BL,02 -p AX=0000 BX=0002 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=0039 NV UP EI PL NZ NA PO NC 1470:0039 F6F3 DIV BL -p AX=0000 BX=0002 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=003B NV UP EI PL NZ NA PO NC 1470:003B 8BD8 MOV BX,AX -p AX=0000 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=003D NV UP EI PL NZ NA PO NC 1470:003D 26 ES: 1470:003E 8B01 MOV AX,[BX+DI] ES:00A8=0003 -p AX=0003 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=0040 NV UP EI PL NZ NA PO NC 1470:0040 89440A MOV [SI+0A],AX DS:000A=656E -p AX=0003 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=0043 NV UP EI PL NZ NA PO NC 1470:0043 8B4405 MOV AX,[SI+05] DS:0005=0010 -p AX=0010 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=0046 NV UP EI PL NZ NA PO NC 1470:0046 8B5407 MOV DX,[SI+07] DS:0007=0000 -p AX=0010 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=00A8 DS=145A ES=144C SS=144C CS=1470 IP=0049 NV UP EI PL NZ NA PO NC 1470:0049 8B7C0A MOV DI,[SI+0A] DS:000A=0003 -p AX=0010 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0003 DS=145A ES=144C SS=144C CS=1470 IP=004C NV UP EI PL NZ NA PO NC 1470:004C F7F7 DIV DI -p AX=0005 BX=0000 CX=0015 DX=0001 SP=0000 BP=0000 SI=0000 DI=0003 DS=145A ES=144C SS=144C CS=1470 IP=004E NV UP EI PL NZ NA PO NC 1470:004E 89440D MOV [SI+0D],AX DS:000D=3F3F -p AX=0005 BX=0000 CX=0015 DX=0001 SP=0000 BP=0000 SI=0000 DI=0003 DS=145A ES=144C SS=144C CS=1470 IP=0051 NV UP EI PL NZ NA PO NC 1470:0051 03DB ADD BX,BX -p AX=0005 BX=0000 CX=0015 DX=0001 SP=0000 BP=0000 SI=0000 DI=0003 DS=145A ES=144C SS=144C CS=1470 IP=0053 NV UP EI PL ZR NA PE NC 1470:0053 83C610 ADD SI,+10 -p AX=0005 BX=0000 CX=0015 DX=0001 SP=0000 BP=0000 SI=0010 DI=0003 DS=145A ES=144C SS=144C CS=1470 IP=0056 NV UP EI PL NZ NA PO NC 1470:0056 83C304 ADD BX,+04 -p AX=0005 BX=0004 CX=0015 DX=0001 SP=0000 BP=0000 SI=0010 DI=0003 DS=145A ES=144C SS=144C CS=1470 IP=0059 NV UP EI PL NZ NA PO NC 1470:0059 E2B8 LOOP 0013 -p AX=014D BX=0054 CX=0000 DX=2580 SP=0000 BP=0000 SI=0150 DI=4588 DS=145A ES=144C SS=144C CS=1470 IP=005B NV UP EI PL NZ NA PO NC 1470:005B B8004C MOV AX,4C00 -d ds:0 14f 145A:0000 31 39 37 35 20 10 00 00-00 20 03 00 20 05 00 20 1975 .... .. .. 145A:0010 31 39 37 36 20 16 00 00-00 20 07 00 20 03 00 20 1976 .... .. .. 145A:0020 31 39 37 37 20 7E 01 00-00 20 09 00 20 2A 00 20 1977 ~... .. *. 145A:0030 31 39 37 38 20 4C 05 00-00 20 0D 00 20 68 00 20 1978 L... .. h. 145A:0040 31 39 37 39 20 56 09 00-00 20 1C 00 20 55 00 20 1979 V... .. U. 145A:0050 31 39 38 30 20 40 1F 00-00 20 26 00 20 D2 00 20 1980 @... &. .. 145A:0060 31 39 38 31 20 80 3E 00-00 20 82 00 20 7B 00 20 1981 .>.. .. {. 145A:0070 31 39 38 32 20 A6 5F 00-00 20 DC 00 20 6F 00 20 1982 ._.. .. o. 145A:0080 31 39 38 33 20 91 C3 00-00 20 DC 01 20 69 00 20 1983 .... .. i. 145A:0090 31 39 38 34 20 C7 7C 01-00 20 0A 03 20 7D 00 20 1984 .|.. .. }. 145A:00A0 31 39 38 35 20 81 24 02-00 20 E9 03 20 8C 00 20 1985 .$.. .. .. 145A:00B0 31 39 38 36 20 8A 03 03-00 20 A2 05 20 88 00 20 1986 .... .. .. 145A:00C0 31 39 38 37 20 7C 47 05-00 20 D2 08 20 99 00 20 1987 |G.. .. .. 145A:00D0 31 39 38 38 20 EB 03 09-00 20 E9 0A 20 D3 00 20 1988 .... .. .. 145A:00E0 31 39 38 39 20 CA 42 0C-00 20 C5 0F 20 C7 00 20 1989 .B.. .. .. 145A:00F0 31 39 39 30 20 18 0D 12-00 20 03 16 20 D1 00 20 1990 .... .. .. 145A:0100 31 39 39 31 20 38 1F 1C-00 20 22 20 20 E0 00 20 1991 8... " .. 145A:0110 31 39 39 32 20 58 19 2A-00 20 16 2D 20 EF 00 20 1992 X.*. .- .. 145A:0120 31 39 39 33 20 28 44 39-00 20 5E 38 20 04 01 20 1993 (D9. ^8 .. 145A:0130 31 39 39 34 20 28 F0 46-00 20 99 3B 20 30 01 20 1994 (.F. .; 0. 145A:0140 31 39 39 35 20 68 97 5A-00 20 88 45 20 4D 01 20 1995 h.Z. .E M. -p AX=4C00 BX=0054 CX=0000 DX=2580 SP=0000 BP=0000 SI=0150 DI=4588 DS=145A ES=144C SS=144C CS=1470 IP=005E NV UP EI PL NZ NA PO NC 1470:005E CD21 INT 21 -p Program terminated normally -p
相关文章推荐
- 第八章实验7的第二种做法(用栈做传递)
- BGP邻居建立+BGP路由传递解决方案之BGP反射器(Route-Reflector)+BGP联邦综合实验2
- 第九周项目二 分数的累加 第二种做法
- 溢出与概率——斐波那契(不用大数的做法)
- golang template传递值的第二种方法 利用map[string]interface{}
- smartforms 不用结构传递内表方法。
- extjs 一次性用一个参数传递多个数据的做法和美化等待信息
- 属性参数(通过self.进行访问的)进行传递值时,不用再本类中进行初始化。
- 《汇编语言》(第三版)王爽第八章实验7个人方法记录
- 在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法!
- 实验4 验证RIP V2 不支持CIDR汇总,但可传递CIDR汇总特性
- 实验讨论Atlas调用WebService时的复杂类型传递
- 不用存储过程一样参数传递
- 请教如何在页面之间传递dataSet?不用session
- 第八章 Ospf实验
- 教你一招:在多个Activity之间传递对象,不用Bundle,Intent.putExtra
- 增强型window.showModalDialog弹出模态窗口数据传递高度封装实验
- Java 引用传递的实验
- C#--第四周实验--任务2--定义一个描述坐标点的CPoint类,利用(默认参数值)构造函数传递参数。(控制台应用)
- Ajax传递给后台值得做法