- UID
- 65892
注册时间2010-3-1
阅读权限50
最后登录1970-1-1
感悟天道
TA的每日心情 | 慵懒 2024-12-4 10:07 |
---|
签到天数: 444 天 [LV.9]以坛为家II
|
本帖最后由 sdnyzjzx 于 2010-12-27 21:57 编辑
抛砖引玉,敬请指正!
assume cs:code
data segment
dw 100 dup (0)
j dd 1024,1234567,238763,887766,345543,99990088
data ends
stack segment
dw 100 dup (0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,200
mov bx,offset j ;要显示数据的偏移位置
mov si,0 ;保存数据转化为字符后偏移位置
mov di,0
mov cx,6 ;要转化数据的个数
_main:
push cx
push bx
mov cx,0ah
mov ax,[bx]
mov dx,[bx+2]
call dtoc
mov bx,8*160 ;第8行开始显示
add bx,di
call show_str
pop bx
pop cx
add bx,4
loop _main
mov ax,4c00h
int 21h
dtoc:
_s0: call divdw
cmp dx,0 ;商的高位是否为0
jnz _s1
cmp ax,0 ;商的低位是否为0
jnz _s1
add cx,30h
mov [si],cx
ret ;数据转化完成,返回
_s1: ;写入转化完成的数据为字符
add cx,30h
mov [si],cx
inc si
mov cx,0ah
jmp _s0
show_str:
mov ax,0b800h
mov es,ax
xianshi:
mov al,[si]
mov byte ptr es:[bx],al ;要显示的字符
mov byte ptr es:[bx+1],2 ;要显示字符的颜色
cmp si,0
jz ok
dec si
add bx,2
jmp xianshi
ok: add di,20 ;显示字符宽度
ret
divdw: push si ;dword型数值除法运算
push di
mov si,ax ;save ax(L)t
mov ax,dx
mov dx,0
div cx ;(H/N)
mov di,dx ;save rem(H/N)
push di
mov dx,0 ;int(H/N)
mov di,2
mul di
mov bx,32768 ;int(H/N)*65536
mul bx
pop di
push ax ;save int(H/N)*65536
push dx
mov ax,di ;Load rem(H/N)
mov di,2
mul di
mul bx
add ax,si ;rem(H/N)*65536+L
div cx
mov si,ax
mov cx,dx
pop dx
pop ax
pop di
add ax,si
pop si
ret
code ends
end start
|
评分
-
查看全部评分
|