dtoc_dword_x:
s:
mov cx,10
call pdw ;由于存在除法溢出,故调用子函数来进行除法操作
push cx
inc bx
mov cx,ax
jcxz ok
jmp short s
ok:
mov cx,bx
dtoc_dword_x1:
pop ds:[si]
add byte ptr ds:[si],'0'
inc si
loop dtoc_dword_x1 ;
pop si
pop dx
pop cx
pop bx
pop ax
ret ;数据恢复,返回主程序
pdw:
;—————————————————————————————解决除法溢出问题———————————————————————————————————————————
;参数:| (ax)=dword型数据低16位 | (dx)=dword型数据高16位 | ds:si指向字符串的首地址 |
;返回:| (ax)=结果的低16位 | (dx)=结果的高16位 | (cx)=余数 |
;———————————————————————————————————————————————————————————————————————————————————————
push bx ;数据保存
push ax ;ax入栈(先进行高16位除法)
mov ax,dx
mov dx,0
p cx ;高16位除法
mov bx,ax ;ax要出栈(进行低16位除法),故用bx来暂存ax现在的数据(结果的高16位)
pop ax
p cx ;低16位除法,此时ax存放的是结果的低16位
mov cx,dx ;此时cx存放的是余数
mov dx,bx ;此时dx存放的是结果的高16位
pop bx
ret ;数据恢复,返回主程序
clr_scr:
;————————清屏操作————————
; 无参数和返回值
;———————————————————————
push cx
push si
push ax
mov cx,4000
mov si,0
mov ax,0B800h
mov es,ax
s1:
mov es:[si],0
inc si
loop s1
pop ax
pop si
pop cx
ret
;++++++++++++++++++++++++++++子函数结束+++++++++++++++++++++++++++++++
code ends
end start