非 BCD 码的乘除及其混合运算

一、 实验目的

a) 熟悉、掌握非 BCD 码乘除的十进制调整指令
b) 掌握非 BCD 码乘除数据在数据段的定义方式
c) 实现非 BCD 码的乘除及其混合运算

二、 实验重难点

a) 重点:在进行非 BCD 码的乘除法时需要用到十进制调整指令,
须了解、掌握该指令的格式及功能。非 BCD 码乘除时,数据
的定义须注意。

  1. AAM 指令
    指令格式:
    AAM ;把 AL 中的积调整为非 BCD 码格式送到 AX 中 2. AAD 指令
    指令格式:
    AAD ;(al)<—10*(ah)+(al),(ah)<—0,进行 DIV 之前调整
  2. 数据的定义
    如定义 A=8 和 B=56:
    A db 08h或A db 00001000B
    B db 06h,05h ;中间需用逗号隔开,低位在前高位在后 b)难点:虽然各条调整指令都是无目操作,但都隐含在 AL 中进 行调整,所以在调整前先得把数据放进 AL 中。在进行非 BCD 码 乘除时,其内存状况很重要,特别是进行两位数的非 BCD 码乘法,
    需要进行加法运算。有时还需进行字与字节之间的转换。 1.内存示意图
    例 3456
    在这里插入图片描述
    2.字与字节之间的转换 Mov al,A
    Mul B
    AAM
    Mov word ptr C0,ax ;字节转换成字 三、 程序代码
    a) 实现 8
    9
DATA  SEGMENT
  BCD1   DB  00001000B
  BCD2   DB  00001001B
  DATA   ENDS
  CODE   SEGMENT
  ASSUME CS:CODE,DS:DATA START:MOV AX, DATA
MOV DS, AX MOV AL, BCD1 MUL BCD2 AAM
MOV AH, 4CH
         INT   21H
  CODE  ENDS
END START

四、 实验结果
在这里插入图片描述
b) 在上个实验的基础上完成 72/5,商存在寄存器 C 中,余存在 寄存器R中。
在数据段添加

BCD3 DB 05H
C DB 2DUP(?) R DB 2DUP(?) 代码段添加
MOV BX,AX
MOV AH,0
MOV AL,BH 
AAD
DIV BCD3 
MOV C+1,AL 
MOV AL,BL 
AAD
DIV BCD3 
MOV C,AL 
MOV R,AH

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值