主题:刚学汇编,请问怎么从键盘接收一个十六进制的数啊!!!
InitInstance
[专家分:8720] 发布于 2006-04-04 23:21:00
小弟刚学,写个简单的代码给小弟看看啊。。。谢谢了
回复列表 (共3个回复)
沙发
newzp [专家分:200] 发布于 2006-04-04 23:27:00
贴个程序
;将A以十六进制输出
STACKS SEGMENT STACK
DW 128 DUP(?)
STACKS ENDS
DATAS SEGMENT
X DB 'A'
STRING DB 'Show A as hex',13,10,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H
MOV CH,2
MOV BL,X
L: MOV CL,4
ROL BL,CL
MOV DL,BL
AND DL,0FH
CMP DL,10
JB NEXT
ADD DL,7
NEXT: ADD DL,30H
MOV AH,2
INT 21H
DEC CH
JNZ L
MOV AH,4CH
INT 21H
CODES ENDS
END START
板凳
InitInstance [专家分:8720] 发布于 2006-04-05 08:29:00
问题:从键盘接收两个都是一位的十六进制的数,比较他们的大小
用大数减去小数,然后将结果存入Z变量中并从屏幕输出。
那位写个来给我参考一下啊,谢谢了.........
3 楼
newzp [专家分:200] 发布于 2006-04-05 13:59:00
写了个试试,发的看看
;输入两个一位十六进制数,大数减小数,差送Z,结果以十六进制输出
STACK SEGMENT STACK
DW 128 DUP(0)
STACK ENDS
DATA SEGMENT
STR DB 'ERROR,INPUT AGAIN:',0DH,0AH,'$'
Z DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DX,STR
T1: MOV AH,1
INT 21H
CALL A
CALL D
CMP CL,1
JZ T1
MOV BL,AL
T2: MOV AH,1
INT 21H
CALL A
CALL D
CMP CL,1
JZ T2
CMP AL,BL
JB L
JMP NEXT
L: XCHG AL,BL
NEXT: SUB AL,BL
MOV Z,AL
CMP AL,10
JL T
ADD AL,7H
T: ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
A PROC
PUSH AX
PUSH DX
MOV DL,0AH
MOV AH,2
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
POP DX
POP AX
RET
A ENDP
D PROC
MOV CL,0
CMP AL,30H
JL EXIT1
CMP AL,3AH
JL EXIT
CMP AL,41H
JL EXIT1
CMP AL,47H
JL EXIT2
CMP AL,61H
JL EXIT1
CMP AL,67H
JL EXIT3
JMP EXIT1
EXIT1: MOV CL,1
MOV AH,9
INT 21H
JMP EXIT
EXIT2: SUB AL,7H
JMP EXIT
EXIT3: SUB AL,27H
EXIT: RET
D ENDP
CODE ENDS
END START
我来回复