【彙編程序】編寫一段子程序BINIHEX,完成十六進制數輸出的功能。要輸出的數在AX寄存器中

STACKS   SEGMENT  STACK
         DW     20H DUP(?) 
         TOP    LABEL WORD
         STACKS ENDS             --定義棧

DATAS    SEGMENT
         TABLE  DB '123456789ABCDEF'
		 DATAS  ENDS     --建一張表,對應十六進制的表示方式

CODES    SEGMENT
         ASSUME CS:CODE,SS:STACKS,DS:DATAS
                 MAIN PROC FAR 
                 MOV AX,STACKS
                 MOV SS,AX
                 LEA SP,TOP
		 MOV AX,DATAS
		 MOV DS,AX

		 MOV   AX,1234
		 CALL  BINIHEX
   
EXIT: 
		MOV AH,4CH
	        INT 21H
		MAIN   ENDP
		
        BINIHEX PROC  NEAR
		PUSH   CX
		PUSH   BX
		PUSH   DX
		                  --保存現場
        
		LEA    BX,TABLE   --將表的首地址送到BX目的是使用XLAT指令
		MOV    DH,4       --循環的次數爲四次
L1:             PUSH   AX
		AND    AX,F000H   --讓AX和F000H做與運算,目的是保留前四位
		MOV    CL,4       --設置循環左移位數爲4
		RCL    AX,CL      --循環左移四位
		XLAT              --換碼指令:(AL)<--((BX)+(AL))
		MOV    DL,AL      --將AL中的值送到DL進行輸出
		MOV    AH,2
		INT    21H
		POP    AX         --將求與運算之前的AX出棧
		RCL    AX,CL      --左移四位,進行下一次運算
		DEC    DH         --DH自減
		CMP    DH,0       --如果DH不等於0,則循環這段操作
		JNZ    L1

                POP   DX
	      POP   BX
	      POP   CX
              MOV    AH,4CH	 
              INT    21H
              BINIHEX ENDP
CODES ENDS END MAIN
發佈了35 篇原創文章 · 獲贊 13 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章