汇编语言实现四则运算

32位加32位部分代码:  

MOV AX, A      ;将A的值放入AX寄存器 

ADD AX, B        ;将B的值和AX中的值相加

MOV C, AX        ;将AX中的值赋给C

MOV AX, A+2        ;将A+2的值放入AX中

ADC AX, B+2        ;将B+2的值与AX的值相加并放入AX

MOV C+2, AX        ;将AX的值放入C的左移两位的位置

A                                        A+2                            B                                        B+2       

 32位减32位部分代码

MOV AX, AD        ;与加法类似
SUB AX, BD
MOV CD, AX
MOV AX, AD+2
SBB AX, BD+2
MOV CD+2, AX ;

32 位模式下,MUL(无符号数乘法)指令有三种类型:

  • 第一种执行 8 位操作数与 AL 寄存器的乘法;
  • 第二种执行 16 位操作数与 AX 寄存器的乘法;
  • 第三种执行 32 位操作数与 EAX 寄存器的乘法。

 

例如,当 AX 乘以一个 16 位操作数时,乘积存放在 DX 和 AX 寄存器对中。其中,乘积的高 16 位存放在 DX,低 16 位存放在 AX

当十六位乘以十六位时

部分代码:

MOV AX, A1        ;将A1的值放入AX寄存器
MUL B1               ;将B1与A1相乘,低位放入AX,高位放入DX
MOV C1, AX        ;将低位的AX的值给C1的低位部分
MOV C1+2, DX    ;将高位的DX部分给C1的高位部分。C1是十六位的

 32 位模式下,DIV(无符号除法)指令执行 8 位、16 位和 32 位无符号数除法。其中,单寄存器或内存操作数是除数。格式如下:

DIV reg/mem8
DIV reg/meml6
DIV reg/mem32

32位除以16位部分代码:

MOV AX, A2        ;将A2的低位部分放入AX寄存器中
MOV DX, A2+2    ;将A2的高位部分放入DX寄存器中
DIV B2                 ;A2除以B2
MOV C2, AX        ;将商放入AX中
MOV C2+2,DX     ;将余数放入DX中

完整代码:

DATA SEGMENT
A DW 1234H, 1234H ;被加数
B DW 2345H, 3456H ;加数
C DW 2 DUP (0) ;预留和
AD DW 4567H, 5678H ;被减数
BD DW 1234H, 2345H ;减数
CD DW 2 DUP (0) ;预留差
A1 DW 6789H ;被乘数
B1 DW 0012H ;乘数
C1 DW 2 DUP (0) ;预留积
A2 DW 5678H, 0234H ;被除数
B2 DW 0F234H ;除数
C2 DW 2 DUP (0) ;预留商,余数
DATA ENDS
  

STACK1 SEGMENT STACK 
DB 100 DUP()
STACK1 ENDS 

CODE SEGMENT
 ASSUME CS:CODE,DS:DATA,SS:STACK1
START PROC FAR
PUSH DS
MOV AX, 0 ;标准序
PUSH AX 
MOV AX, DATA
MOV DS, AX  ;初始化DS
MOV AX, A
ADD AX, B
MOV C, AX
MOV AX, A+2 ;32位加32位
ADC AX, B+2
MOV C+2, AX 
          
MOV AX, AD
SUB AX, BD
MOV CD, AX
MOV AX, AD+2
SBB AX, BD+2
MOV CD+2, AX ;32位减32位

MOV AX, A1
MUL B1
MOV C1, AX
MOV C1+2, DX ;16位乘以16位

MOV AX, A2
MOV DX, A2+2
DIV B2
MOV C2, AX
MOV C2+2,DX ; 32位除以16位


RET
START ENDP
CODE ENDS 

END START

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1342965262

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值