微机原理实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一数据传送
实验目的 :
1、熟悉 8086 指令系统的数据传送指令及 8086 的寻址方式。
2、利用 Turbo Debugger 调试工具来调试汇编语言程序。
实验任务 :
1.通过下述程序段的输入与执行来熟悉 Turbo Debugger 的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下:
MOV BL , 08H
MOV CL , BL
MOV AX , 03FFH
MOV BX , AX
MOV DS : [0020H] , BX
2.用以下程序段将一组数据压入( PUSH )堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下:
MOV AX , 0102H
MOV BX , 0304H
MOV CX , 0506H
MOV DX , 0708H
PUSH AX
PUSH BX
PUSH CX
PUSH DX
出栈程序段请自行编写(用不同的出栈顺序)。
3、指出下列指令的错误并加以改正,上机验证之。
(1) MOV [BX] , [SI]
(2) MOV AH , BX
(3) MOV AX , [SI][DI]
(4) MOV BYTE PTR[BX] , 2000H
(5) MOV CS , AX
(6) MOV DS , 2000H
4、设置各寄存器及存储单元的内容如下:
(BX) = 0010H , (SI) = 0001H
(10010H) = 12H , (10011H) = 34H , (10012H) = 56H , (10013H) = 78H
(10120H) = 0ABH , (10121H) = 0CDH , (10122H) = 0EFH
说明下列各条指令执行完后 AX 寄存器中的内容,并上机验证。
(1) MOV AX , 1200H
(2) MOV AX , BX
(3) MOV AX , [0120H]
(4) MOV AX , [BX]
(5) MOV AX , 0110H[BX]
(6) MOV AX , [BX][SI]
(7) MOV AX , 0110H[BX][SI]
5、将 DS : 1000H 字节存储单元中的内容送到 DS : 2020H 单元中存放。试分别用 8086 的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
6、设 AX 寄存器中的内容为 1111H , BX 寄存器中的内容为 2222H , DS : 0010H 单元中的内容为 3333H 。将 AX 寄存器中的内容与 BX 寄存器中的内容交换,
然后再将 BX 寄存器中的内容与 DS : 0010H 单元中的内容进行交换。试编写程序段,并上机验证结果。
7、设 (DS) = 1000H , (ES) = 2000H ,有关存储器的内容如图 1、5 所示。要求将 DS 段的内容传送到 AX 寄存器, ES 段的内容传送到 BX 寄存器,试编写程序段。
图 1 第 7 题图
实验报告要求 :
1、写明本次实验内容与实验步骤。
2、整理出运行正确的各题源程序段与运行结果。
3、写出第 3 题中改正后的正确指令。
4、小结 Turbo Debugger 的使用方法。
实验二算术逻辑运算及移位操作
实验目的 :
1.熟悉算术逻辑运算指令与移位指令的功能。
2.了解标志寄存器各标志位的意义与指令执行对它的影响。
实验预习要求:
1.复习 8086 指令系统中的算术逻辑类指令与移位指令。
2.按照题目要求在实验前编写好实验中的程序段。
实验任务:
1、实验程序段及结果表格如表 2 :
表 2
2.用 BX 寄存器作为地址指针,从 BX 所指的内存单元 (0010H) 开始连续存入三个无符号数 (10H 、 04H 、 30H) ,接着计算内存单元中的这三个数之与,与放在 0013H 单元中,再求出这三个数之积,积放 0014 单元中。写出完成此功能的程序段并上机验证结果。
3.写出完成下述功能的程序段。上机验证您写出的程序段,程序运行的最后结果(AX) = ?
(1) 传送 15H 到 AL 寄存器;
(2) 再将 AL 的内容乘以 2 ;
(3) 接着传送 15H 到 BL 寄存器;
(4) 最后把 AL 的内容乘以 BL 的内容。
4.写出完成下述功能的程序段。上机验证您写出的程序段,程序运行后的商= ?
(1) 传送数据 2058H 到 DS : 1000H 单元中,数据 12H 到 DS : 1002H 单元中;
(2) 把 DS : 1000H 单元中的数据传送到 AX 寄存器;
(3) 把 AX 寄存器的内容算术右移二位;
(4) 再把 AX 寄存器的内容除以 DS : 1002H 字节单元中的数;
(5) 最后把商存入字节单元 DS :1 003H 中。
5.下面的程序段用来清除数据段中从偏移地址 0010H 开始的 12 个字存储单元
的内容(即将零送到这些存储单元中去)。
(1) 将第 4 条比较指令语句填写完整(划线处)。
MOV SI , 0010H
NEXT : MOV WORD PTR[SI] , 0
ADD SI , 2
CMP SI ,
JNE NEXT
HLT
(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从 0020H 开始),则
上述程序段应如何修改?
上机验证以上两个程序段并检查存储单元的内容就是否按要求进行了改变。
6、输入并运行表 3 中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能就是什么。
表 3