汇编基础练习题5:
输入字符‘1’、‘2’、‘3’,得到数值123,在利用2中的输出子程序,将得到的数值123输出。
编译工具:Masm for Windows 集成实验环境2012.5
(附带一个工具下载地址https://download.csdn.net/download/qq_36931762/10825773
有需要可以去下载)
代码思路:
三次输入数字,利用BH来暂存上一结果,然后在赋值给AL,这时BH没用,将BH赋值为10,然后乘BH,结果存在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
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给点鼓励总是好的)嘻嘻