汇编语言:编一程序把键入的十六进制数转化 成十进制数。要求 1:在屏幕上显示转换的十进制数,键入的

编一程序把键入的十六进制数转化
成十进制数。要求
1:在屏幕上显示转换的十进制数,键入的最大
数为FFFFH
2:若键入非十六进制数,则显示出错提示,重新输入。
谢谢大佬!(*'へ'*)

编一程序,把键入的十六进制数,在屏幕上用十进制数显示出来。

键入的十六进制数,不限位数。如超出四位,只将最后四位做转换并显示。

若键入非十六进制数,则不予显示,等待继续输入。

键入回车符,结束输入。

程序如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-24
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