代码:
;把ascii码(0-9 A-F)转化成二进制显示
;先输入次数(1-9 A-F) 再转换
data segment
times db 'times?(1-9)',0dh,0ah,'$'
mesg db 0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
beg: mov ax,data
mov ds,ax
mov ah,09h ;9号DOS调用 显示输入times
mov dx,offset times
int 21h
mov ah,01h
int 21h
call asciinum ;输入参数 al 输出参数bl
mov bh,0
mov cx,bx
again: push cx
mov ah,09h
mov dx,offset mesg
int 21h
mov ah,01h
int 21h
call asciinum ;输入参数 al 输出参数bl
mov ah,02h ;显示“=”
mov dl,'='
int 21h
call disp ;显示二进制值
mov ah,02h ;显示B
mov dl,'B'
int 21h
pop cx
loop AGAIN
mov ax,4c00h
int 21h
asciinum proc ;把ascii转换成数字 例如 1 转化成1 A转化成10 F转换成15
cmp al,3ah
jc next1
sub al,07h
next1: sub al,30h
mov bl,al
ret
asciinum endp
disp proc ;disp proc 和 disp endp 也是用来标记子程序 可以直接用标号
mov cx,8
s: mov dl,'0'
rol bl,1
jnc s1
mov dl,'1'
s1: mov ah,02h
int 21h
loop s
ret
disp endp
code ends
end beg