1. 程式人生 > >彙編基礎練習題12:在資料區定義一個字型變數a1,a1中有一個元素,利用7中的輸入子程式輸入一個整數,然後把該整數存放到資料區的a1變數中。

彙編基礎練習題12:在資料區定義一個字型變數a1,a1中有一個元素,利用7中的輸入子程式輸入一個整數,然後把該整數存放到資料區的a1變數中。

彙編基礎練習題12:

在資料區定義一個字型變數a1,a1中有一個元素,利用7中的輸入子程式輸入一個整數,然後把該整數存放到資料區的a1變數中。

編譯工具:Masm for Windows 整合實驗環境2012.5
(附帶一個工具下載地址https://download.csdn.net/download/qq_36931762/10825773
有需要可以去下載)
程式碼思路:

   ---------------------------------------可愛的程式碼區別線----------------------------------
DATAS SEGMENT
    ;此處輸入資料段程式碼
    a1 DW 1
DATAS ENDS

STACKS SEGMENT
    ;此處輸入堆疊段程式碼
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX

    CALL PIN
    MOV SI,OFFSET A1
    MOV [SI],AX
    
    ;輸出回車部分,回車表示那個退格
    MOV DL,0DH
    MOV AH,02H
    INT 21H
    MOV DL,0AH;輸出換行
    MOV AH,02H
    INT 21H
    
    MOV AX,[SI]
    CALL PRINTAX
    MOV AH,4CH
    INT 21H

PIN PROC

	PUSH BX
	PUSH CX
	PUSH DX
	MOV CX,0
    MOV DL,10
CIN:    
    MOV AH,1
    INT 21H
    SUB AL,48
    MOV AH,0
    MOV BX,AX
    MOV AX,CX
    CMP BX,9
    JA EN
    CMP BX,0
    JB EN
    MUL DL
    ADD AX,BX   
    MOV CX,AX
    JMP CIN
EN:
	POP DX
	POP CX
	POP BX
	RET

PIN ENDP
    
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給點鼓勵總是好的)嘻嘻