实验一、顺序与分支程序设计
一、实验目的:
- 掌握顺序程序设计方法。
- 掌握分支程序的结构及分支程序的设计,调试方法。
- 学习数据传送及算术和逻辑运算指令的用法。
- 熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
二、实验内容:
- 有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。
▶
Code
1 |
|
- 有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。
▶
Code
1 |
|
- 在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。
▶
Code
1 |
|
- 在BUF和BUF+1、BUF+2单元分别放有一个有符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。
▶
Code
1 |
|
- 将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。
▶
Code
1 |
|
- 从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。
▶
Code
1 |
|
- 从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。
- 当输入字符为A,则计算X+Y,并以十六进制形式显示出来
- 当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来
- 当输入字符为C,则计算X*Y,并以十六进制形式显示出来
- 当输入字符为D,则计算X/Y,并以十六进制形式显示出来
▶
Code
1 |
|
三、实验设备
PC机一台
四、实验准备
- 分析题目,将程序中的原始数据和最终结果的存取方法确定好。
- 画出流程图。
- 写出源程序。
- 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。
五、实验步骤
这里展示代码和运行结果,为了方便阅读,将代码块放到了实验内容中。
六、实验总结
- 常用指令
指令 | 指令功能 |
---|---|
mov reg, data | reg = data |
add reg, data | reg = reg+data |
sub reg, data | reg = reg-data |
mul reg | ax = ax*reg |
div reg | 当reg为8位 ah = ax/reg, al = ax%reg 当reg为16位 ax = ax/reg, dx = ax%reg |
cmp a, b | a == b zf = 1 a != b zf = 0 a < b cf = 1 a >=b cf = 0 a > b cf = 0, zf = 0 a <= b cf = 1, zf = 1 |
jb tag | 当cf = 1, 跳转到 tag |
je tag | 当 zf = 1, 跳转到 tag |
jmp tag | 无条件跳转到 tag |
- 标志位寄存器
寄存器 | 功能 |
---|---|
sf | 符号标志位,运算结果为负时为1 |
cf | 进位标志位(无符号数)当向最高位进位或借位时为1 |
of | 溢出标志位(有符号数)当有符号数运算发生溢出时为1 |
- 汇编分支程序的实现:
程序设计过程中,需要根据给定条件选择执行的代码片段时,需要程序实现跳转程序指针到指定代码片段的功能,8086提供的多个跳转语句可配合程序标号一同使用,编译时,编译器将自动把程序标号替换为对应指令的地址,因此,通过合理的设计标号,配合运算指令对寄存器的更改效果,可利用不同的跳转指令实现程序的分支选择。
附录
-
文件列表
- 8086-8088 汇编语言指令表.pdf
-
下载地址
- 蓝奏云链接:https://wwrl.lanzn.com/iHYAc2srr42b
- 蓝奏云提取密码:31va
实验一、顺序与分支程序设计
https://flowerdown.org/posts/20221217-141104.html