用汇编完成一个十六位二进制数到十六进制数的转换操作程序设计
用MASM编程 需要源程序
DATA SEGMENT
BUFA DW 0001001000110100B ;1234H
BUFB DB 4 dup(?)
DB 'H',0DH,0AH,'$' ;输出缓野橘举冲区
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,BUFA
MOV SI,OFFSET BUFB
MOV CH,4 ;循环控制十伍手六进制数显示位数
MOV CL,4
ROTATE: ROL DX,CL ;循环左移4位,将高位十六进制数移到低位
MOV BX,DX ;保护移动后的数
AND DX,0FH ;屏蔽掉高位保颂碧留该低位数
CMP DL,9
JG L
ADD DL,30H
MOV [SI],DL
INC SI
JMP NEXT
L: ADD DL,37H
MOV [SI],DL
INC SI
NEXT: DEC CH
MOV DX,BX
JNZ ROTATE
MOV AH,9
LEA DX,BUFB
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
DATAS SEGMENT
Y DB 4
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV CL,4
MOV BX,1111111111111111B
A: ROL BX,CL
MOV DX,15
AND DX,BX
CMP DL,10
JNB B
ADD DL,30H
MOV AH,02H
INT 21H
DEC Y
CMP Y,0
JZ D
JMP A
B: ADD DL,37H
MOV AH,02H
INT 21H
DEC Y
CMP Y,0
JNZ A
D: MOV AH,01H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
我这里是歼衡把二进制数放在bx中,如果你册慧想转换多组数据,就把他定氏姿做义成子程序调用