显示单元:Show 8bit byte 8 dup (?) Show 16bit byte 16 dup (?) 程序代码:
data segment Var8bit db 93h
Var16bit dw 0a3c4h Show8bit db 8 dup (?) Show16bit db 16 dup (?) data ends
stack segment dw 20 dup(?) tos label word stack ends
code segment
assume cs:code, ds:data, ss:stack main proc
start:
mov ax,stack mov ss,ax
mov sp,offset tos
mov ax,data mov ds,ax
mov ax,offset Var8bit push ax mov ax,8 push ax
mov ax,offset Show8bit push ax
call btrascii
lea dx,Show8bit mov ah,9h int 21h
mov ax,offset Var16bit
;设置栈底,有无都可
;置位数8 ;字符串首址
push ax mov ax,16 push ax
mov ax,offset Show16bit push ax
call btrascii
lea dx,Show16bit mov ah,9h int 21h
mov ah,4ch int 21h
main endp
btrascii proc push bp mov bp,sp push bx push cx push si
mov si,[bp+8] mov bx,[si] mov cx,[bp+6] mov si,[bp+4]
cmp cx,8 jne label1 mov bh,bl label1: mov al,0 rol bx,1 rcl al,1 add al,30h mov [si],al inc si
loop label1
mov [si],byte ptr 0dh mov [si+1],byte ptr 0ah
;置位数8
;字符串首址
;二进制数 ;位数 ;目标地址
;bx左循环一次,将当前最高位给CF
;al带进位左循环一次,得到CF,即dx最高位 ;将此位数转换成ascii码
;循环cx次
;回车 ;换行
mov [si+2],byte ptr '$' pop si pop cx pop bx pop bp ret
btrascii endp
code ends end start
运行结果: