汇编基础练习题3:
输入字符‘3’,切出数值3,在利用2中的输出子程序,将切出的数值3输出。
编译工具:Masm for Windows 集成实验环境2012.5
(附带一个工具下载地址https://download.csdn.net/download/qq_36931762/10825773
有需要可以去下载)
代码思路:
由键盘输入一个字符,然后此时AL内存的是‘3’,即ASCII码为51,那么要将AX中的数变为数字3,即AL中的数减去48,即AL中的数为3,然后将AH中的数赋值为0!,然后输出AX,完成题目。
---------------------------------------------可爱的代码区别线----------------------------------
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,1
INT 21H
SUB AL,48
MOV AH,0
CALL PRINTAX
MOV AH,4CH
INT 21H
PRINTAX PROC ;打印AX内的数的函数
PUSH BX
PUSH CX
PUSH DX
MOV BL,10
MOV CL,0
CMP AX,10
JB PRINTF
W:
DIV BL
PUSH AX
INC CL
MOV AH,0
CMP AX,0
JA W
p:
POP DX
DEC CL
MOV DL,DH
ADD DL,48
MOV AH,2
INT 21H
CMP CL,0
JNE P
POP DX
POP CX
POP BX
RET
PRINTF:
MOV DL,AL
ADD DL,48
MOV AH,2
INT 21H
POP DX
POP CX
POP BX
RET
PRINTAX ENDP
CODES ENDS
END START
--------------------------------------------代码区别线----------------------------------
输出结果:
看不懂欢迎提问啦,也欢迎提出我代码中的问题和提出代码优化方案,大家一起学习嘛。
原创看过随手点个赞吧!(虽然我也不太知道点赞有啥用emmm给点鼓励总是好的)嘻嘻