第10章10-3题 数据部分!求修改
本帖最后由 莫名其妙 于 2012-2-20 23:18 编辑dtoc: push dx
push cx
push bx
push si
push di ;各种进栈
mov bx,0
mov si,0
x:mov cx,10 ;除数为10
mov dx,0 ;被除数高16位置0
div cx ;ax 是商 dx是余数 余数+30h进栈然后在出栈
mov cx,ax ;进行循环判断 cx=0进行 jcxz 跳转
add dx,30h
push dx ;将余数保存进栈
inc bx ;保存push次数
jcxz orzz ;跳
jmp short x
orzz:mov cx,bx;读取push次数 设置循环值
pop ax ;余数出栈
mov ds:,al
jcxz orz
inc si
dec bx ;循环次数自减
jmp short orzz
orz:pop di
pop si
pop bx
pop cx
pop dx
ret
以上是第10章 10-3题 中间calldtoc 代码 按照我的思路应该是可以执行的但是一直DEBUG 报错 求修改!~
下面是debug 单步跟踪的 出现问题的地方就在 ret 以后 难道是栈的问题? 我设置的栈db 10 dup (0) 难道call 保存的IP没存上?
-t
AX=0000BX=00A5CX=0000DX=0031SP=FFFEBP=0000SI=1405DI=0000
DS=1404ES=13F4SS=1405CS=1406IP=004E NV UP EI PL ZR NA PE NC
1406:004E 5A POP DX
-t
AX=0000BX=00A5CX=0000DX=0013SP=0000BP=0000SI=1405DI=0000
DS=1404ES=13F4SS=1405CS=1406IP=004F NV UP EI PL ZR NA PE NC
1406:004F C3 RET
-d 1404:0
1404:000031 32 36 36 36 00 00 00-00 00 00 00 00 00 00 00 12666...........
1404:001000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1404:0020B8 7A 31 BB 04 14 8E DB-BB 05 14 8E D3 BE 00 00 .z1.............
1404:0030E8 0E 00 B6 08 B2 03 B1-CA E8 34 00 B8 00 4C CD ..........4...L.
1404:004021 52 51 53 56 57 BB 00-00 BE 00 00 B9 0A 00 BA !RQSVW..........
1404:005000 00 F7 F1 8B C8 83 C2-30 52 43 E3 02 EB ED 8B ........0RC.....
1404:0060CB 58 88 04 E3 04 46 4B-EB F5 5F 5E 5B 59 5A C3 .X....FK.._^[YZ.
1404:007053 51 56 B0 A0 FE CE F6-E6 8B D8 B0 02 F6 E2 83 SQV.............
-t
AX=0000BX=00A5CX=0000DX=0013SP=0002BP=0000SI=1405DI=0000
DS=1404ES=13F4SS=1405CS=1406IP=0000 NV UP EI PL ZR NA PE NC
1406:0000 B87A31 MOV AX,317A
-
唉..低级超级低级错误竟然漏写了sp 指针位置我说怎么 回事呢...!~~:@:@:@:'(:'( 这实验10可是费了不少脑细胞!~ 已经解决了竟然是忘记写指针!~mov sp,10 mov sp,10 mov sp,10 mov sp,10 mov sp,10 mov sp,10 ........默写10遍以儆效尤!~ {:10_245:}看不来呀 漏写了sp 指针位置mov sp,10{:10_249:}
页:
[1]