如何用汇编语言实现2个16进制书相减

2025-04-13 20:45:24
推荐回答(3个)
回答1:

输入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

回答2:

SUB AX ,BX
就是寄存器AX-BX,将结果放到AX中。
AX和BX都是16位寄存器 可以分为高8位和低8位。
汇编中可以直接写16进制,比如FFH,不过16位中高8位为0的话要写成0FH,因为定义变量的时候可以定义FH,这样会和16进制的搞混

回答3:

数就是数~不要跟进制较劲