|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ds:data,ss:stack
data segment
db '000000'
data ends
stack segment
dw 32 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,32
mov ax,0ffffh
mov dx,0
mov cx,2
call divdw
mov si,0
call dtoc
mov dl,37
mov dh,12
mov cl,00000010b
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
;数据:ax
;字符串地址:ds:si
dtoc: mov cx,0
push cx
cle2: mov dx,0
mov cx,10
call divdw
add cx,30h
push cx
mov cx,ax
jcxz cle3
jmp cle2
cle3: pop cx
mov ds:[si],cl
jcxz cle4
inc si
jmp cle3
cle4: ret
;被除数:ax低八位 dx高八位
;除数:cx
;商:ax低八位 dx高八位
;余数:cx
s: dw 0,0
divdw: mov di,offset s
mov bx,0
mov cs:[di],ax ;将低八位暂存在cs:[di]中
mov ax,dx
mov dx,0
div cx
mov cs:[di+2],ax;将高八位除以除数的结果暂存在cs:[dx+2]中
mov ax,cs:[di]
div cx
mov cx,dx
mov dx,cs:[di+2]
ret
;di 行 1~25 第一行显示不出来刷新没了
;dh 列 1~80
;cl 属性 7闪烁 654背景红绿蓝 3高亮 210前景红绿蓝
;si 字符串偏移地址ds:si
show_str:
mov ax,0b800h
mov es,ax
mov bx,0
mov al,dh
sub al,1
mov ch,160
mul ch
mov bx,ax
mov al,dl
sub al,1
mov ch,2
mul ch
add bx,ax
mov al,cl
mov cx,0
mov di,0
cle: mov cl,ds:[si]
jcxz sss
mov es:[bx+di],cl
mov es:[bx+di+1],al
add si,1
add di,2
loop cle
sss: ret
code ends
end start
|
|