e411_08.asm

来自「汇编的大作业源代码 包括基本和进阶的汇编语言的运用 对初学者很有帮助 内有更详细」· 汇编 代码 · 共 81 行

ASM
81
字号
;思路为不再需要弹出N,直接把结果都保存在RESULT中,即少压入一次栈
STACK     SEGMENT     PARA  STACK
          DW          100H DUP(?)
STACK     ENDS

DATA      SEGMENT     PARA
N         DW          4
RESULT     DW        ?
DATA      ENDS

CODE      SEGMENT     PARA
          ASSUME      CS:CODE, DS:DATA, SS:STACK
MAIN      PROC        FAR
          MOV         AX,DATA
          MOV         DS,AX
          
          MOV         AX,N
          PUSH        AX
          CALL        CALCULATE
          CALL        DISP_VALUE
          
          MOV         AX,4C00H
          INT         21H
MAIN      ENDP
CALCULATE PROC        NEAR
          PUSH        BP
          MOV         BP,SP
          PUSH        DX
          MOV         BX,[BP+4]
          CMP         BX,0
          JNZ         CAL1
          MOV         AX,1
          JMP         SHORT CAL2
CAL1:     PUSH        BX
          DEC         BX
          PUSH        BX
          CALL        CALCULATE
          POP         RESULT
          MUL         RESULT
          MOV        RESULT,AX
CAL2:  POP         DX
          POP         BP
          RET         2
          
CALCULATE ENDP

DISP_VALUE PROC
          PUSH        DX
          PUSH        CX
          PUSH        BX
          PUSH        AX
          
          MOV         CX,5
          MOV         BX,10
          
DLP1:     XOR         DX,DX
          DIV         BX
          PUSH        DX
          LOOP        DLP1
          
          MOV         BX,0
          MOV         CX,5
DLP2:     POP         DX
          CMP         DL,0
          JNZ         DLP2_1
          CMP         BX,0
          JZ          DLP2_2
DLP2_1:   MOV         BX,1
          OR          DL,30H
          MOV         AH,2
          INT         21H
DLP2_2:   LOOP        DLP2

          POP         AX
          POP         BX
          POP         CX
          POP         DX
          RET
DISP_VALUE  ENDP
CODE      ENDS
          END         MAIN

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?