编一程序,把键入的十六进制数,在屏幕上用十进制数显示出来。
键入的十六进制数,不限位数。如超出四位,只将最后四位做转换并显示。
若键入非十六进制数,则不予显示,等待继续输入。
键入回车符,结束输入。
程序如下:
data segment
x db 34h ;00110100b ;34h在内存中的存储格式为00110100b
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov bl,byte ptr [x] ;al<-10001010b
mov cl,8 ;cx<-8
l1: test bl,80h ;看bl和1000000b与的最高为是否为1
jnz l2 ;如果不是1,则l2,输出0
mov dl,'0'
mov ah,02h
int 21h ;输出1
jmp l3
l2: mov dl,'1'
mov ah,02h
int 21h ;输出0
l3: shl bl,1 ;al逻辑左移,将次高位移动到最高位
dec cl
jnz l1
mov ah,4ch
int 21h
code ends
end start
该程序使用逻辑尺方法。首先将34h防入bl中;然后用逻辑左移的方法将bl的每一位移动至最高位,然后根据它和10000000与的方法查看最高位是否为1,如果是,则屏幕显示1,否则显示0。这样,屏幕上显示的是34h的二进制值00110100b