|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code
data segment
db 10 dup(0)
data ends
code segment
start: mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc: mov di,10
s0: mov dx,0
div di ;商存放在ax中,余数存放在dx中
mov cx,ax ;商存放在cx中,用来判断除法结束
add dx,30h
mov [si],dl ;将ASCII码保存,注意与数据对应位置是逆序排放
jcxz ok
inc si
jmp short s0
ok: ret
show_str: mov ax,0b800h ;给出显示内存段地址
mov es,ax
mov al,0a0h ;每行字节数
dec dh ;行数-1
mul dh ;得出每行首地址
mov bx,ax
mov al,02h
mul dl
sub ax,2 ;定位列字节首地址=(dl-1)*2
add bx,ax ;将偏移地址存入bx
mov al,cl ;存放颜色
s:mov ah,[si] ;将每个字节依次存放到内存显示的位置
mov es:[bx],ah
mov es:[bx+1],al
add bx,2 ;内存显示位置增加2个字节
dec si ;数据data中字节递减
mov cl,0
mov ch,[si] ;将data中下一个字节存入ch,
jcxz ok1 ;判断cx是否为0,为0则跳出循环
jmp short s ;cx不为0,继续执行
ok1: ret
code ends
end start |
|