汇编语言:从键盘输入一个0~255之间的整数,并显示出对应该数的二进制和十六进制数。
1、在屏幕提示:“please input a number(0~255): ”后,输入一个0~255之间的整数。
若所输入的数不在此范围内,或输入其它字符,则屏幕提示:“input a invalid number, exit!”。
2、在屏幕上显示出对应该数的二进制和十六进制数。
例如:127 = 01111111B = 7FH
2013-12-22 14:30 提问者采纳
链接:http://zhidao.baidu.com/question/1445927116927293700.html
如下即可:
;================================================
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 13, 10, 'Please input a number(0~255): $'
MSG2 DB 13, 10, 'Input a invalid number, exit! $'
CRLF DB 13, 10, ' = $'
NNNN DB ?
DATA ENDS
;----------------------------------
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;-----------------------
LEA DX, MSG1
MOV AH, 9
INT 21H
IN_CHAR:
MOV AH, 1
INT 21H
CMP AL, 13
JE IN_END
CMP AL, '0'
JB IN_ERR
CMP AL, '9'
JA IN_ERR
SUB AL, 30H
MOV DL, AL
MOV AL, NNNN
MOV BL, 10
MUL BL
CMP AH, 0
JNZ IN_ERR
ADD AL, DL
JC IN_ERR
MOV NNNN, AL
JMP IN_CHAR
IN_END:
LEA DX, CRLF
MOV AH, 9
INT 21H
CALL OUT_BIN
LEA DX, CRLF
MOV AH, 9
INT 21H
CALL OUT_HEX
JMP EXIT
IN_ERR:
LEA DX, MSG2
MOV AH, 9
INT 21H
EXIT:
MOV AH, 4CH
INT 21H ;返回DOS
;----------------------------------
OUT_BIN:
MOV AH, 2
MOV BL, NNNN
MOV CX, 8
LP1:
MOV DL, '0'
ADD BL, BL
JNC LP2
INC DL
LP2:
INT 21H
LOOP LP1
MOV DL, 'B'
INT 21H
RET
;----------------------------------
OUT_HEX:
MOV AH, 0
MOV AL, NNNN
MOV BL, 16
DIV BL
MOV DX, AX
MOV AH, 2
CMP DL, 10
JB LP3
ADD DL, 7
LP3:
ADD DL, 30H
INT 21H
MOV DL, DH
CMP DL, 10
JB LP4
ADD DL, 7
LP4:
ADD DL, 30H
INT 21H
MOV DL, 'H'
INT 21H
RET
;----------------------------------
CODE ENDS
END START
;================================================
提问者评价:非常感谢!!!