|
主题 : : 有个疑问 关于实验四2的结果 [待解决] |
回复[ 1次 ]
点击[ 571次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-01-28 17:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-01-17 11:34 |
实验四
第一问 我的解答
assume cs:code
code segment
mov ax,20h
mov ds,ax
mov bx,0
mov dx,0
mov dl,[bx]
mov ax,0
mov cx,64
s:mov dl,al
mov ah,0
mov [bx],dl
inc bx
inc ax
loop s
mov ax,4c00h
int 21h
code ends
end
第二问是要求用9条指令 。
我的解答
assume cs:code
code segment
mov ax,20h
mov ds,ax
mov cx,64
s:mov [bx],al
inc bx
inc al
loop s
mov ax,4c00h
int 21h
code ends
end
然后,debug
结果却是
0B62:000A 43 INC BX
0B62:000B FEC0 INC AL
0B62:000D E2F9 LOOP 0008
0B62:000F B8004C MOV AX,4C00
0B62:0012 CD21 INT 21
0B62:0014 833E560720 CMP WORD PTR [0756],+20
0B62:0019 720A JB 0025
0B62:001B B81C04 MOV AX,041C
0B62:001E 50 PUSH AX
0B62:001F E86244 CALL 4484
-g 0008
AX=0020 BX=0000 CX=0040 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0020 ES=0B52 SS=0B62 CS=0B62 IP=0008 NV UP EI PL NZ NA PO NC
0B62:0008 8807 MOV [BX],AL DS:0000=20
-d 20:0
0020:0000 20 21 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F !..............
0020:0010 10 11 12 13 14 15 16 17-18 19 1A 1B 1C 1D 1E 1F ................
0020:0020 20 21 22 23 24 25 26 27-28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
0020:0030 30 31 32 33 34 35 36 37-38 39 3A 3B 3C 3D 3E 3F 0123456789:;<=>?
0020:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0020:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0020:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0020:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-
在20:00 和20:01两处为什么不正确 ,而偏偏除了这两处别的还都对。想不明白哦。
在缩短程序的时候,不通过寄存器中介,直接由mov [bx],al 完成。
这里我没有给bx ,ax附初值,是不是这的原因,呢 ,请高手指点迷津 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-01-28 22:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-04 12:21 |
回复:[贴 主]
------------------
assume cs:code
code segment
mov ax,20h
mov ds,ax
mov cx,64
s:mov [bx],al
inc bx
inc al
loop s
mov ax,4c00h
int 21h
code ends
end
你的这段程序中第三行mov ax,20h,第六行mov [bx],al ;注意此时低位寄存器al中的数据仍为20h,故在20:00 和20:01两处不正确,另外在这两处之后也是错误的,其后依次是22,23,24......;(我已经debug过了,你自己再可以试一次!)
下面是我做的,给你做参考!
assume cs:code
code segment
mov ax,20h
mov ds,ax
mov bx,0
mov cx,40h
s: mov [bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end | | |
|