谁有实验10的第2个问题的代码
最近做到实验10的第3的问题就老是出错。 我自己做出来了实验10的第一个问题,在做下面2个问题的时候就出问题了。都3天了还没解决。所以来论坛看看有高人会实验10的第2个问题不,麻烦把代码发上来我学习一下,实在搞不懂了。 assume cs:codesgcodesg segment
start: mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw:
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
ret
codesg ends
end start 秋的洗炼 发表于 2011-8-5 19:33 static/image/common/back.gif
前面的代码看懂了,后面的代码没看懂,能添加一点注释吗
[*]
assume cs:codesg
codesg segment
start: mov ax,4240h ;L
mov dx,000fh ;H
mov cx,0ah ;N
call divdw ;调用子程序
mov ax,4c00h
int 21h
divdw:
push ax ;保存4240H
mov ax,dx ;把 H 放入ax
mov dx,0 ;dx清零 不影响
div cx ;除以cxax=商dx=余数 当前ax=1dx=5
mov bx,ax ;商存放于bx ax=1 dx=5
pop ax ;ax又变回了4240 ax=4240 dx=5
div cx ;再除次 =rem(H/N)的余数*65536也就是dx+L =dx ax 在/N除以cxcx=10
mov cx,dx ;cx=余数
mov dx,bx ;把刚才的商存回dx也就是int(H/N)*65536 +这句话
;ax呢 现在是 /N的结果
;int(H/N)*65536 + /N
ret
codesg ends
end start
就是这样了..
只是丶梦 发表于 2011-8-6 17:15 static/image/common/back.gif
[*]
就是这样了..
看明白了,除完以后,DX还是存储的是高为的商,AX还是存储的低位的商
谢谢耐心的解答,{:5_101:}
:lol嗯呵.一开始我不知道这个是写什么代码..看着看着.突然就知道是除法溢出处理的那个代码了..
页:
[1]