assume cs:code
data segment
db 10 dup(0)
data ends
code segment
start:
mov ax,13666
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:
push dx
push ds
push si
push cx
push ax
push di
mov di,0
mov bx,10
mov si,0
pushnumber: ;将数据压入栈(否则显示顺序是反的)
mov dx,0 ;dx每次都要赋值为0,否则导致除法不正确
div bx
add dl,030h
push dx
mov cx,ax
inc si
jcxz popnumber
jmp short pushnumber
popnumber:
pop dx
mov ds:[di],dl
inc di
dec si
mov cx,si
jcxz ok1
jmp short popnumber
ok1:
pop di
pop ax
pop cx
pop si
pop ds
pop dx
ret
show_str:
push ax
push bx
push cx
push dx
push si
push di
push es
mov bl,dl ;乘法运算要用到dx
mov ax,0b800h
mov es,ax
mov ax,0
mov al,dh
mov di,050h
mul di
add al,bl
add ax,ax
mov bx,ax ;此时dx值肯定为0
mov di,0
mov ah,cl
s: mov al,ds:[si] ;给相应的显示缓存赋值,直到字符串出现0
mov cx,0
mov cl,al
jcxz ok
mov es:[bx+di],ax
inc si
add di,2
jmp short s
ok: pop es
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
王爽 汇编语言 实验十 2、数值显示
最新推荐文章于 2023-10-07 23:38:27 发布