马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:dmd
sjd segment
db 10 dup(0)
sjd ends
dmd segment
cxks:mov ax,12666
mov bx,dmd
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show
mov ax,4c00h
int 21h
dtoc: mov bx,0
s1: mov dx,0
mov cx,10
div cx ;DX AX 中的数据除10,余数给CX
add dx,30h;取其ascii码,这里与书上说的不符 DX中存余数
mov ds:[bx],dl ;将数据送入代码段中保存
mov cx,ax
jcxz tc ;AX中为0时跳转退出
inc bx
jmp s1
tc :ret
show:mov al,dh
push cx
mov cl,160
mul cl
pop cx
mov dh,16
div dh
add ax,0b800h
mov es,ax ;将显存第三行段地址送给ES附加段
mov dh,0
add dl,dl ;占用2个字节,ASCII码和字符属性
mov di,dx ;第三列偏移送给DI
mov si,0
mov dl,cl ;将字符属性送给DL
s3: mov al,ds:[bx]
mov es:[di],al
mov es:[di+1],dl
mov cx,bx
jcxz s2
add di,2
dec bx ;减一指令
jmp s3
s2:ret
dmd ends
end cxks
为神魔书上说 DX + AX 为被除数 CX 为除数,余数存放在CX中,但我用DEBUG 检测余数却存放在DX中望高手指教 |