汇编基础练习题4:
输入字符‘1’、‘3’,得到数值13,在利用2中的输出子程序,将得到的数值13输出。
编译工具:Masm for Windows 集成实验环境2012.5
(附带一个工具下载地址https://download.csdn.net/download/qq_36931762/10825773
有需要可以去下载)
代码思路:
由键盘输入两个字符,然后此时AL内存的是‘1’,即ASCII码为49,那么要将AX中的数变为数字3,即AL中的数减去48,即AL中的数为1,先存好这个数字1然后输入第二个字符3,同样方法,使1和3在AX中以13(十三)形式存在,然后输出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 BH,AL
MOV AH,1
INT 21H
SUB AL,48
MOV BL,AL
MOV AL,BH
MOV AH,0
MOV BH,10
MUL BH
ADD AL,BL
CALL PRINTAX
MOV AH,4CH
INT 21H
PRINTAX PROC
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给点鼓励总是好的)嘻嘻