1. 程式人生 > >輸入字元‘1’、‘2’、‘3’,得到數值123,在利用2中的輸出子程式,將得到的數值123輸出。

輸入字元‘1’、‘2’、‘3’,得到數值123,在利用2中的輸出子程式,將得到的數值123輸出。

彙編基礎練習題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給點鼓勵總是好的)嘻嘻