马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 loop 于 2011-5-27 00:23 编辑
这道题目,有点小问题!如果那些数 带0话 就出问题了assume cs:code
data segment
dd 123,12666,1,894,42,573 ; 24
dd 44444444,123456789 ;8
data ends
da segment
db 255 dup(0)
da ends
code segment
start: mov cx,8
mov di,0
to:
mov ax,data
mov ds,ax
mov ax,[bx]
mov dx,[bx+2]
push cx
push bx
mov bx,0
call dtoc
pop bx
pop cx
add bx,4
loop to
mov dh,8
mov dl,16
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc: push ax
mov ax,da
mov ds,ax
pop ax
go:
mov cx,10
call divdw
jcxz save
add cx,30h
push cx
inc bx
jmp short go
save:
mov cx,bx
mov bx,0
s:pop ax
mov [di+bx],ax
inc bx
loop s
mov [di+bx],1fh ;插个空格
add di,bx
inc di
ret
divdw: ;参数 cx-除数 dx-被除数高位 ax-被除数低位
;返回值 ax-商的低位 dx-商的高位 cx-余数
push bx
mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax
mov ax,bx
div cx
mov cx,dx
pop dx
pop bx
ret
show_str:
push cx
MOV AX,0b800h
MOV ES,AX
dec dh
mov ax,160
mul dh
push ax
dec dl
mov ax,2
mul dl
push ax
pop bx
pop di
pop dx
begin:
mov cl,[si]
mov ch,0
jcxz over1
mov es:[di+bx],cl
inc bx
mov es:[di+bx],dl
inc bx
inc si
jmp short begin
over1:
ret
code ends
end start
|