关于汇编,16进制怎么输出?

来源:百度知道 编辑:UC知道 时间:2024/06/23 13:00:11
在屏幕上显示16进制,比如1FDH这样子的。
下面是我写的,只能输出00,
DATAS SEGMENT
RESULT DB 12H
N DB 2
DATAS ENDS

STACKS SEGMENT
DB 4 DUP(?)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

OUTPUT:
LEA SI,RESULT
MOV CL,4
SHL RESULT,CL
MOV DL,RESULT
AND DL,0FH
ADD DL,30H
CMP DL,39H
JBE NEXTOUT
ADD DL,7
NEXTOUT:
MOV AH,2
INT 21H
DEC N
JNE OUTPUT

MOV AH,4CH
INT 21H
CODES ENDS
END START

我看了半天,这个问题就是算逻移位和循环移位的区别
把SHL 改成 ROL就行了

我编了个输入3位十进制,然后输出16进制的程序,我已经试了,能运行。希望能帮到你,你调试一下,应该能看懂哈,加了换行的。
DATA SEGMENT
D1 DB 20 DUP(?)
D2 DB 'please input= $'
D3 DB 'out put= $'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA DX,D2
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV BL,100
MUL BL
MOV DX,AX
MOV AH,01H
INT 21H
SUB AL,30H
MOV BL,10
MUL BL
MOV BX,AX
MOV AH,01H
INT 21H
SUB AL,30H
CBW
ADD AX,BX
ADD AX,DX
MOV BX,16
LEA