assume cs:code
code segment
start:
mov ax,0ffffh
mov bl,10
call divword
mov ax,4c00h
int 21h
;divword program
;功能,进行不会产生溢出的除法运算,被除数为word型,除数为8位,结果为word型
;参数 (ax)=被除数 (bl)=除数
; 返回 (ah)=结果的高8位,(al)=结果的低8位 (bl)=余数
divword:
;寄存器的保存
push cx
mov cl,al;cl来保存低位
mov al,ah
mov ah,0
div bl
mov ch,al ;用ch来保存高位的商
mov al,cl
div bl
mov bl,ah
mov ah,ch
pop cx
ret
code ends
end start
- [qingpengchen2011] 我的子程序是没错的,我在想是不是虚拟机的问题 08/08 12:17
- [qingpengchen2011] 嗯~行。我再认真详细看看,谢谢咯 08/08 10:38
- [tomato] 我运行了,不是地址的问题。也没有出现崩溃的现象,不过有的子程序功能好像不太对。子程序书中都有,建议你 08/07 22:07
- [tomato] 还是不行吗?我帮你看一下。 08/07 21:29
- [qingpengchen2011] table等标志的值都是在此安装程序中的偏移地址,所以那些子程序等等的地址都是要重新计算的。这点我倒 08/07 18:10
- [qingpengchen2011] table dw sub0-int7ch+200h,sub1-int7ch+200h,sub2-in 08/07 18:06
- [qingpengchen2011] table dw sub0-int7ch+200h,sub1-int7ch+200h,sub2-in 08/07 18:06
- [tomato] 结果也贴上来晾凉吧。 08/05 23:49
- [tomato] 我看不是死循环的问题,是子程序入口地址错了。告诉你一个解决思路,就是单步跟踪读取子程序地址那个地方, 08/05 23:45
- [tomato] 很有可能是你程序的问题,检查一下是不是死循环了。 08/05 23:41