编写程序实验两个数的加减结果的判断_实验一 两个多字节数的加减运算 -

实验一 多字节数求和运算,字节拆分运算

一. 实验目的

1.熟悉emu8086调试程序的使用。

2.编写两个4字节数的加法、减法运算程序,并运用emu8086进行调试。 3. 编写字节拆分运算程序,并运用emu8086进行调试 二. 实验目的

1.学习数据传送和算术运算指令 2.熟悉在PC机上调试程序的方法

三. emu8086调试程序的使用

1. 启动emu8086

a.在WINDOWS下双击emu8086图标,启动界面如图1所示,用户可以选择新建文本、程序实例、启动指南、近期文档。

2.新建文件

单击图1中的“New”选项,软件会弹出如图2所示的选择界面。

选择empty workspace的选项,打开一个完全空的文档。

3. 编辑程序

如图3所示为编辑程序界面。该编辑界面集文档编辑、指令编译、程序加载、系统工具、在线帮助为一体。

编写完程序后,用户只需单击工具栏上的“emulate”按钮即可仿真运行程序。 4.仿真运行

当用户将程序加载到仿真器后,会同时打开仿真器界面和源程序界面,用户在仿真器界面中也可以同时看到源代码和编译后的机器码。点击的任意一条源程序指令,则对应的机器代码显示为被选显示状态,与此同时,上面的代码指针也会相应变化。用户也可以通过这种操作了解,数据段和堆栈段中各变量或数据在存储器中的情况。

用户可以利用工具栏中的“single step”按钮进行单步跟踪调试,以便仔细观察各寄存器、存储器、变量、标记位等情况,这对于程序初始调试时十分有用;当程序调试完毕,或需要连续运行观察时,则可以使用“run”按钮;当希望返回上一步操作时,则可以使用“step back”按钮;若单击“reload”按钮,则仿真器会重新加载程序,并将指令指针指向程序的第一条指令;您也可以利用“load”按钮,从您保存的文件夹中加载其它程序。用户除使用上述工具栏中的按钮进行仿真调试外,还可以利用其菜单中的其它功能进行更高级的调试和设置。

四. 多字节加法

要求:在当前的数据段内(段基址寄存器DS)的偏移地址为1000H处定义4各字节的

被加数78H、56H、34H、12H(即被加数为12345678H);在偏移地址2000H处定义4字节加数12H、34H、56H、78H(即加数为78563412H) 程序流程:

程序清单:

MOV SI,1000H ;置被加数指针 MOV DI,2000H ;置加数指针 MOV CX,4 ;数据个数 CLC ;清进位标志 AGAIN: MOV AL,[SI] ;取被加数 ADC AL,[DI] ;加 加数 MOV [SI],AL ;和送回至加数 INC SI ;修改数据指针 INC DI

LOOP AGAIN ;记数—1=0?

五. 拆分字符

拆字

10050H 10051H

7 A 0 7 10052H 0 A 程序:

MOV AX,1000H

MOV DS,AX ;数据段基址DS=1000H MOV SI,50H ;需拆字的指针SI=50H MOV AL,[SI] ;取字节给AL AND AL,0FH ;屏蔽高4位

MOV [SI+1],AL ;得到的数据存入10051 MOV AL,[SI] ;再取出需拆字的字节 MOV CL,4

SHR AL,CL ;逻辑右移4次,高4位补0 MOV [SI+2],AL ;存入10052单元

五. 实验内容(实验程序及结果写在练习本上)。

(1)熟悉emu8086各窗口内容。 (2)多字节加法

1. 在编辑窗口输入多字节加法程序。 2. 点击“emulate”进行仿真。

3. 在当前数据段的1000H、2000H偏移地址输入被加数和加数。 4. 用单步命令逐步运行上述程序,运行过程注意每条指令执行后,指定的寄存器.

或内存的变化,填入下表。

MOV MOV MOV CLC ADC MOV INC INC

SI,1000H ;置被加数指针 (SI)= DI,2000H ;置加数指针 CX,4 AL,[SI] AL,[DI] [SI],AL SI DI

;数据个数 ;清进位标志 ;取被加数 ;+ 加数 ;和送回至加数

(DI)= (CX)= (AL)= (AL)= [SI]= (DI)= 循环第1次 AGAIN: MOV

;修改数据指针 (SI)= ;记数—1=0? (CX)= LOOP AGAIN

第2次 第3次 第4次 5. 运行结束查看和的情况。

即在当前的数据段内(段基址寄存器DS)的偏移地址为1000H处定义4各字节的内容

(3)拆分字符

1.在编辑窗口输入多字节加法程序。 2.点击“emulate”进行仿真。

3.在数据段中1000H:0050H单元输入数据7A。 4.用单步命令逐步运行上述程序,运行过程注意查看每条指令执行后各寄存器及.

内存的变化。

MOV AX,1000H (AX)= MOV DS,AX MOV SI,50H MOV AL,[SI] AND AL,0FH MOV AL,[SI] MOV CL,4 SHR AL,CL

(DS)= (SI)= (AL)= (AL)= (AL)= (AL)= MOV [SI+1],AL [SI+1]= MOV [SI+2],AL [SI+2]=

6.查看1000H:0051H、1000H:0052H单元中的结果 六. 选做

将数据段中偏移地址为1000H处的120个字节搬移到2000H处,自己设计程序,运行,并思考应观察哪些数据,如何观察?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值