用简单的汇编语句实现2进制数的16进制输出,假定1A8B

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:10:36
1楼那位,你是神经病吗,C语言我是大师了还要你写个头哦,汇编!

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

这是16进制的2进制

假设二进制数在AX中:
PUSHA
MOV BX,AX
MOV CL,4
MOV CH,4
AGAIN:
ROL BX,CL
MOV DX,BX
AND DX,0FH
DEC CH
CMP DL,9
JG ABC
ADD DL,30H
MOV AH,2
INT 21H
CMP CH,0
JE AGAIN
ABC:
ADD DL,55
MOV AH,2
INT 21H
CMP CH,0
JE AGAIN
POPA

我用x86的汇编吧。

STACK SEGMENT PARA STACK
AREA DW 100H DUP(?)
BT EQU $-AREA
STACK ENDS

DATA SEGMENT PARA
NUM DW 1101010001011B ; 1A8B的二进制值
DATA ENDS

CODE SEGMENT PARA
ASSUME CS:CODE,DS:DATA,SS:STACK<