乘法训练 遇问题求解
本帖最后由 qjr1213 于 2016-3-23 21:18 编辑assume cs:dmd,ds:sjd,ss:dzd
sjd segment
dd 1234567890 ;被乘数
dd 59801 ;乘数
df 0 ;结果存放
sjd ends
dzd segment
dw 16 dup (?)
dzd ends
dmd segment
k:mov ax,dzd
mov ss,ax
mov sp,32
mov ax,sjd
mov ds,ax
add di,4
mov si,8
mov es,ax
mov ax,0
mov cx,0004
g:push cx
mov cx,0004
o:xor ax,ax
xor dx,dx
mov dl,byte ptr ;取出一个字节乘数到dl
mov al,byte ptr ;取出一个字节被乘数al
pushf
mul dx
inc bx
mov dx,es:
popf
adc ax,dx
mov es:,ax
inc si
loop o
pop cx
inc di
xor ax,ax
mov ax,4
push di
sub di,ax
mov si,8
add si,di
pop di
mov bx,0
loop g
mov ax,4c00H
int 21H
dmd ends
end k
系统计算器计算出4325 8338 D182 而我的程序算出4325 8238 D182 为什么结果不正确呢,是构思还是语法有错?求大神解 assume cs:dmd,ds:sjd,ss:dzd
sjd segment
dd 123456789 ;被乘数
dd 598015 ;乘数
df 0 ;结果存放
sjd ends
dzd segment
dw 16 dup (?)
dzd ends
dmd segment
l: jnc w
inc ah
jmp w
k:mov ax,dzd
mov ss,ax
mov sp,32
mov ax,sjd
mov ds,ax
add di,4
mov si,8
mov es,ax
mov ax,0
mov cx,0004
g:push cx
mov cx,0004
o:mov ax,0
mov dx,0
mov dl,byte ptr ;取出一个字节乘数到dl
mov al,byte ptr ;取出一个字节被乘数al
pushf
mul dl
inc bx
mov dx,word ptr es:
popf
jmp l
w:add ax,dx
pushf
mov es:,ax
inc si
popf
loop o
pop cx
inc di
mov ax,0
mov ax,4
push di
sub di,ax
mov si,8
add si,di
pop di
mov bx,0
loop g
mov ax,4c00H
int 21H
dmd ends
end k
哎,自已解决了。进制位CF问题。别外加个jnc跳转。
页:
[1]