请问各位高手,如何用汇编语言实现十六进制的书转换成二进制后输出

来源:百度知道 编辑:UC知道 时间:2024/05/15 23:26:09
如何用汇编语言实现十六进制的书转换成二进制后输出

这是我曾经写的一个程序,这段代码的作用是循环4次输入4位16进制数,我把它转换位2进制数,方法就是对于每一位数(现在是ASCII码)转化为0——9或a——f的数,然后左移4位,放到一个变量里面,循环就行了,也就是16进制转换为2进制的基本算法,左移4位,不断的进行。。

XOR BX,BX ;BX里面放输入后经转换的2进制数
MOV CL,04 ;转换的时候移位次数
MOV AH,01
MOV DI,4 ;循环4次输入
LP1: SHL BX,CL ;由于最高位也只移3个4位,所以就放在前面。
INT 21H
SUB AL,30H ;输入的1位数与0的ascii比较
CMP AL,9
JBE DEAL1 ;不小于9的为A,B,C等值
SUB AL,7 ;根据位置关系再减7
DEAL1: ADD BL,AL ;转换后的数存入BL
DEC DI
CMP DI,0
JNZ LP1

整体解题思想是把这个数左移一位,这时最高位移到CF中,如果CF为0,就显示“0”,否则显示“1”。将这个步骤循环8次即可。
cseg segment
assume cs:cseg
begin:
mov bl,46h;待转换的数放BL
mov cx,8
next:
shl bl,1;左移一位
jc dis1;若CF=1,转到dis1
mov dl,'0';CF=0,显示“0”
jmp disp
dis1:
mov dl,'1';显示“1”
disp:
mov ah,2
int 21h
loop next;循环8次

mov