⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm.asm

📁 汇编程序
💻 ASM
字号:
DATA  SEGMENT  ;定义数据段
DATA1 DB  32H,39H,30H,35H,34H ;用ASCII码表示被乘数45092
DATA2 DB  34H ;DB伪指令,用来定义字节类型的伪变量,乘数4
MES1  DB  '*','$'
MES2  DB  '=','$'
RESULT DB  6 DUP(00H)
DATA ENDS
STACK SEGMENT     ;定义堆栈段
STA  DB  20 DUP(?) ;为变量STA分配20个字节的空间
TOP  EQU  LENGTH  STA
STACK ENDS
CODE SEGMENT  ;定义代码段
        ASSUME CS: CODE,DS:DATA,SS:STACK,ES:DATA
START:  MOV  AX,DATA
        MOV   DS,AX
        MOV   AX,STACK
        MOV   SS,AX
        MOV   SP,TOP
        LEA   SI,DATA1 ;被乘数地址送SI  
        MOV   BX,05H
L1:     MOV   AH,02H  ;DOS功能号02H送AH   
        MOV   DL,[SI+BX-1] ;被乘数送DL   
        INT   21H   ; DOS功能号调用(显示器输出)
DEC   BX
JNZ   L1
MOV   AH,09H  ; DOS功能号09H送AH 
LEA   DX,MES1 ;MES1的偏移地址送DX
INT   21H     ; DOS功能号调用(显示字符串) 
LEA   SI,DATA2 ;乘数地址送SI
MOV   AH,02H
MOV   DL,[SI]  ;乘数送DL
INT   21H       ;显示乘数
MOV   AH,09H
LEA   DX,MES2   ; MES2的偏移地址送DX 
INT   21H
MOV   SI,OFFSET DATA2 ;显示算式
MOV   BL,[SI]   ;乘数送BL
AND   BL,00001111B  ;屏蔽乘数高4位;ASCII码转换为十六进制
MOV   SI,OFFSET DATA1;;被乘数偏移地址送SI 
MOV   DI,OFFSET RESULT ;运算结果偏移地址送DI 
MOV   CX,05
LOOP1: MOV   AL,[SI]   ;被乘数送AL
      AND AL,00001111B;屏蔽被乘数高4位;ASCII码转换为十六进制
       INC   SI
       MUL   BL      ;AL * BL送AX 
         AAM         ;乘法十进制调整  
       ADD   AL,[DI] ;结果低位与前次计算的进位相加 
         AAA         ;非压缩BCD码加法十进制调整指令
MOV   [DI],AL    ;结果AL 送DI
      INC   DI
      MOV   [DI],AH ;结果AH 送DI+1 
      LOOP  LOOP1
      MOV   CX,06
      MOV   SI, DI 
DISPL:MOV   AH,02H
      MOV   DL,[SI]
      ADD   DL,30H
      INT   21H
      DEC   SI
      LOOP  DISPL    ;显示运算结果 

MOV   AX,4C00H  ;返回DOS
INT   21H       ;结束  
CODE  ENDS
END   START 

⌨️ 快捷键说明

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