计算机硬件基础
实验报告
指导教师: 姓名: 班级: 学号:
目 录
实验一:运算器实验-----------第3页
实验二:存储器读写实验---------第6页
实验三:数据通路实验----------第8页
实验四:微程序控制器试验-------第10页
实验五:TEG-G1模型计算机(微程序控制器)测试-------------------第12页
实验六:TEG-G1模型计算机(硬连线控制器)测试-------------------第14页
第 2 页
实验七:程序调试BEDUG实验------第16页
实验八:内存操作数及寻址方法实验---第18页
附录部分:--------------第20页 《实验七 调试程序DEBUG》实验手册 《实验八 内存操作数及寻址方法》实验手册
实验一:运算器实验
一、实验目的:
1.熟悉寄存器的读写操作。 2.熟悉运算器的数据通路。
3.验证运算器的加、减、与、或功能。
4.按给定的数据,完成几种指定的算术、逻辑运算功能。
二、实验原理:
实验电路图详见实验指导书P12-P13页。
操作方式选择 S3 S2 S1 S0 HLLH LHHL HLHH M L L H 操作 类型 加法 减法 逻辑与 功能 F=A加B F=A减B F=A与B 第 3 页
HHHL HHHH HLHL 运算器操作功能
H H H 逻辑或 传送1 传送2 F=A或B F=A F=B TEC-G1中
三、实验设备:
1.TEC-G1计算机组成实验系统1台 2.双踪示波器1台 3.直流万用表1只
四、实验内容:
1.用逻辑笔测试时序信号T1、T2、T3。
2.对下述7组数据进行加、减、与、或运算。 (1)A=0F0H,B=10H (2)A=10H,B=0F0H (3)A=03H,B=05H (4)A=0AH,B=0AH (5)A=0FFH,B=0AAH (6)A=55H,B=0AAH (7)A=0C5H,B=61H
3.在实验过程中,记录每一步中有关信号的值,并对这些信号的作用予以解释。
五、实验步骤:详见实验指导书P14-P16页。 六、实验结果:
1.用逻辑笔测试时序信号T1、T2、T3 时序信号 QD D1 D0 指示灯 T1 T2 T3 高 低 2.7组数据的加、减、与、或运算结果与C、Z标志位
第 4 页
数值 运算 A=0F0H,B=10H A=10H,B=0F0H A=03H,B=05H A=0AH,B=0AH 加 减 与 或 C Z A=0FFH,B=0AAH A=55H,B=0AAH A=0C5H,B=61H 3.试验中记录每一步中有关信号的值,并对这些信号的作用予以解释 操作 指示灯 SEL0 SEL1 SEL2 SEL3 LR SWBUS ALUBUS LDZ 写入D0-D7 写入A0-A7 减 与 或 重置 LDC 写入B0-B7,加 解释: 七、思考题:(加分项目)
为什么在A总线上出现数据A、在B总线上出现数据B后,在数据总线DBUS上能够直接观测运算的数据结果,而标志结果却在下一步才能观测到?
答:
第 5 页
第 6 页
实验二:存储器读写实验
一、实验目的:
1.了解静态随机读写存储器MH6116的基本工作特性及使用方法。 2.了解半导体存储器SRAM怎样存储和读出数据。
二、实验原理:
详见实验报告书P16-P19页。
第 7 页
注:1.存储器器件HM6116外形图详见实验报告书P17页
2.写操作时序图详见实验报告书P17页 3.读操作时序图详见实验报告书P18页 4.存储器实验电路图详见实验报告书P18页
三、实验设备:
1.TEC-G1计算机组成实验系统1台 2.双踪示波器1台(非必备) 3.直流万用表1只
四、实验内容:
1.将下列10十个数写入从地址23H开始的10个存储单元。
10H,11H,12H,13H,14H,2AH,2BH,25H,0FH,08H
2.从地址23H开始的存储单元连续读出10个数,并将读出的数和写入的数比较,看是否一致。
3.在存储器读、写的过程中,记录下有关信号的值,并且解释这些信号的作用。
五、实验步骤:
详见实验报告书P19-P21页。
六、实验结果:
1.实验内容1和2制作成动画录像收存
2.在存储器读、写的过程中,记录下有关信号的值,并且解释这些信号的作用 操作 指示灯 SWBUS RAMBUS LAR SELAR LRW ARINC 输入存储地址 输入存储信息 输入读取地址 解释:
3.结合实验报告书P18页的存储器实验电路图,说明在TEC-G1模型见算计中是如何实现存储器的读写
答:
第 8 页
七、思考题:(加分项目)
在TEC-G1模拟计算机中,信号SWBUS和RAMBUS能否同时为1?为什么?
答:
第 9 页
实验三:数据通路实验
一、实验目的:
1.了解TEC-G1模型计算机的数据通路。
2.了解各种数据在TEC-G1模型计算机数据通路中的流动路径。
二、实验原理:
详见实验报告书P21-P23页。
TEC-G1模型计算机数据通路框图详见实验报告书P22页。
三、实验设备:
1.TEC-G1计算机组成实验系统1台 2.双踪示波器1台(非必备) 3.万用直流表1只
四、实验内容:
1.向R0中写入35H,向R1中写入86H。
2.将R0中的数写入存储器20H单元,从存储器20H单元读数到R2。 3.将R1中的数写入存储器20H单元,从存储器20H单元读数到R3。 4.检查R2、R3的内容是否正确。
5.在上述任务中记录有关信号的值,并对信号的取值做出正确的解释。
五、实验步骤:
详见实验报告书P23-P24页。
六、实验结果:
1.实验内容1和2制作成动画录像收存
2.在实验过程中记录有关信号的值,并对信号的取值做出正确的解释
10 第 页
七、思考题:(加分项目)
1.在实验报告书P23-P24页的实验步骤3-6中是否改变了R0和R1的值?为什么?
答:
2.在实验报告书的P24页的实验步骤6中A总线A7-A0上显示的是哪个寄存器的值?为什么?
答:
11 第 页
实验四:微程序控制器试验
一、实验目的:
1.掌握时序信号发生器的工作原理。
2.了解TEC-G1模型计算机的微程序控制器的原理。 3.学会微程序控制器的一般设计方法。 4.读懂微程序流程。
5.理解微程序流程图设计方法。
二、实验原理:
12 第 页
详见实验报告书P25-P30页。
注:1.时序信号发生器电路图详见实验报告书P25页。
2.
名称 加法 减法 助记符 ADD R0,Rs SUB R0,R 功能 RO <- R0 + Rs R0 <- R0 - Rs R0 <- R0 and Rs R0 <- R0 or Rs Rd <- R0 R0 <- Rs Rd <- imm R0 <- addr 指令格式 IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 0000 0001 0010 0011 0100 1010 0101 0110 00 00 00 00 Rd 00 Rd XX Rs Rs Rs Rs 00 Rs XX XX 逻辑与 AND R0,R 逻辑或 OR RO,R 传送1 传送2 取数 存数 C条件转移 Z条件转移 停机 MOVA Rd,R0 MOVB R0,Rs LD R0,imm ST R0,addr JC addr JZ addr HALT 立即数imm 存储器地址addr 如果C=1,转移到地 0111 XX XX 址addr 存储器地址addr 如果Z=1,转移到地 1000 XX XX 址addr 存储器地址addr 暂停T1、T2、T3 1001 XX XX TEC-G1模型计算机指令系统
3.微程序流程图详见实验报告书P27页。
4.TEC-G1模型计算机的伪指令格式图详见实验报告书P28页。 5.微程序控制器电路图详见实验报告书P29页。
三、实验设备:
1.TEC-G1计算机组成实验系统1台 2.双踪示波器1台(非必备) 3.直流万用表1只
四、实验内容:
1.采用单周期方式追踪每种指令的执行过程。
2.记录每种指令执行中每一条微指令中控制信号的值,并做出正确解释。 3.说明指令JC ADDR和JZ ADDR的实现方法。
五、实验步骤:
详见实验报告书P30-P32页。
六、实验结果:
1.实验内容制作成动画录像收存
2.记录每种指令执行中每一条微指令中控制信号的值,给出解释
13 第 页
3.说明指令JC ADDR和JZ ADDR的实现方法
(1)JC ADDR的实现方法:
(2)JZ ADDR的实现方法:
七、思考题:(加分项目)
LD指令执行的过程中,微地址为15H时,为什么信号PCINC=1?
答:
14 第 页
实验五:TEG-G1模型计算机(微程序控
制器)测试
一、实验目的:
1.通过测试程序的运行,进一步掌握机器指令与微指令的关系。
2.掌握从取出第一条指令开始,TEC-G1模型计算机(微程序控制器)怎样一步步运行测试程序,从而掌握使用微程序控制器的简单计算机的基本工作原理。
3.通过运行测试程序,验证TEC-G1模型计算机的正确性。结合以前的实验,初步掌握简单计算机(微程序控制器)的设计思路和设计方法。
二、实验原理:
详见实验报告书P32-P33页。
三、实验设备:
1.TEC-G1计算机组成实验系统1台。 2.双踪示波器1台(非必备) 3.万用直流表1只
四、实验内容:
1.运行程序1测试运算指令。
2.运行程序2测试存储器读写指令。 3.运行程序3测试条件转移指令。
五、实验步骤:
详见实验报告书P34-P37页。
15 第 页
六、实验结果:
1.将程序1翻译成二进制格式,写入存储器,检查正确后,使用单微指令方式和连续方式各运行一次。在单微指令方式运行时,每条指令执行后检查执行结果。在连续方式运行时,程序1运行结束后检查运行结果。程序1如下:
START(00H):LD R0,#95H LD R1,#34H ADD R0,R1 SUB R0,R1 MOVA R3,R0 LD R0,#0AAH LD R2,#55H OR R0,R2 AND R0,R2 HALT
2.将程序2翻译成二进制格式,写入存储器,检查正确后,使用单微指令方式和连续方式各运行一次。在单微指令方式运行时,每条指令执行后检查执行结果。在连续方式运行时,程序1运行结束后检查运行结果。程序2如下:
START(00H):LD R0,#95H LD R1,#34H LD R2,#22H LD R3,#23H ST R0,14H MOVB R0,R1 ST R0,R1 MOVB R0,R2 ST R0,16H MOVB R0,R3 ST R0,17H HALT
3.将程序3翻译成二进制格式,写入存储器,检查正确后,使用单微指令方式和连续方式各运行一次。在单微指令方式运行时,每条指令执行后检查执行结果。在连续方式运行时,程序1运行结束后检查运行结果。程序3如下:
START(00H):LD R0,#95H LD R1,#0A4H JC S2
S1: LD R0,#0AAH LD R2,#55H AND R0,R2 JZ R3 S2: JC S1
MOVA R3,R0 MOVA R1,R0 S3: HALT
16 第 页
1. 从整体上叙述TEC-G1模型计算机的工作原理
答:
注:程序1、2、3测试结果制作成动画录像收存
七、思考题:(加分项目)
1.如果一条指令执行后需要查看执行结果,在取指微指令(微地址为01H)改变操作模式开关行不行?为什么?
答:
2.在单微指令方式执行测试程序的过程中,拨动数据开关SD7-SD0会不会对程序的执行结果产生影响,请说明理由?
答:
实验六:TEG-G1模型计算机(硬连线控
制器)测试
一、实验目的:
1.通过测试程序的运行,进一步掌握机器指令与周期的关系。
2.掌握从取出第一条指令开始,TEC-G1模型计算机(硬连线控制器)怎样一步步运行测试程序,从而掌握使用硬连线控制器的简单计算机的基本工作原理。
17 第 页
3.通过运行测试程序,验证TEC-G1模型计算机(硬连线)的正确性。结合以前的实验,初步掌握简单计算机(硬连线控制器)的设计思路和设计方法。
二、实验原理:
详见实验报告书P41-P42页。
三、实验设备:
1.TEC-G1计算机组成实验系统1台。 2.双踪示波器1台(非必备) 3.万用直流表1只
四、实验内容:
1.运行程序1测试运算指令。
将程序1翻译成二进制格式,写入存储器,检查正确后,使用单周期方式和连续方式各运行一次。在单周期方式运行时,每条指令执行后检查执行结果。在连续方式运行时,程序1运行结束后检查运行结果。注:程序1详见《实验五:TEG-G1模型计算机(微程序控制器)测试》的“实验结果”部分。
2.运行程序2测试存储器读写指令。
将程序2翻译成二进制格式,写入存储器,检查正确后,使用单周期方式和连续方式各运行一次。在单周期方式运行时,每条指令执行后检查执行结果。在连续方式运行时,程序1运行结束后检查运行结果。注:程序2详见《实验五:TEG-G1模型计算机(微程序控制器)测试》的“实验结果”部分。
3.运行程序3测试条件转移指令。
将程序3翻译成二进制格式,写入存储器,检查正确后,使用单周期方式和连续方式各运行一次。在单周期方式运行时,每条指令执行后检查执行结果。在连续方式运行时,程序1运行结束后检查运行结果。注:程序3详见《实验五:TEG-G1模型计算机(微程序控制器)测试》的“实验结果”部分。
五、实验步骤:
详见实验报告书P42-P44页。
六、实验结果:
1.程序1、2、3测试结果制作成动画录像收存
2.从整体上叙述TEC-G1模型算计机(硬连线控制器)的工作原理
答:
七、思考题:(加分项目)
18 第 页
如果一条指令执行后需要查看执行结果,在取指令周期W1改变操作模式开关行不行?为什么?
答:
19 第 页
实验七:程序调试BEDUG实验
一、实验目的:
1.熟悉调试程序DEBUG。
2.掌握调试程序DEBUG操作步骤。
二、实验原理:
详见附录《实验七:程序调试BEDUG实验》的“基本操作”部分。
DEBUG主要命令一览表
DEBUG下符号与标志位对应表
三、实验设备:
1.个人笔记本电脑1台 2.DEBUG.EXE程序
四、实验内容:
1.掌握调试程序DEBUG的基本命令。
2.在DEBUG下查看开机后执行的第一条指令。 3.在DEBUG下查看数据在内存中的存放情况。
五、实验步骤:
20 第 页
详见附录《实验七:程序调试BEDUG实验》的“操作步骤”部分。
六、实验结果:
实验内容1、2和3制作成动画录像收存
七、思考题:(加分项目)
(1).开机后的第一条指令应该在内存的什么区域?是在ROM还是RAM中?为什么?
答:
(2).开机后执行的第一条指令的地址是否固定?为什么?
答:
21 第 页
实验八:内存操作数及寻址方法实验
一、实验目的:
1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式。 3.掌握简单指令的执行过程。
二、实验原理:
请将相应的信息写在对应的语句旁(用注释方式): (1)求两数和程序与两数多字节加减法程序:
MOV AX,1234 MOV [1000],AX MOV BX,1002
MOV BYTE PTR[BX],20 MOV DL,39
22 第 页
INC BX
MOV [BX],DL DEC DL MOV SI,3
MOV [BX+SI],DL MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846 ①用A命令输入上述程序,并用T命令逐条运行。 ②每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容,注明是什么寻址方式。
注意:D命令显示结果中右边的AscII字符及双字节数存放法。 (2)求累加和程序:
MOV BX,1000 MOV CX,10 SUB AX,AX LOP:ADD AL,[BX] ADC AH,O INC BX J:LOOP LOP INT3 ①用A命令将程序输入到100H开始的内存中,在输入时记下标号LOP和J的实际地址,在输入LOOP指令时LOP用实际地址值代替。
②用命令N AA将此程序命名为文件AA(文件名可任取)。
③用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)。 ④用命令w 100将此程序存到AA命名的磁盘文件中。 ⑤用命令Q退出DEBUG。 ⑥用命令DEBUG AA再次调入DEBUG和文件AA,可用u命令检查调入程序。若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 ⑦用E命令在内存地址1000H处输入16个数字。 ⑧用命令G—100J(J用实际地址代替),使程序运行并停在断点J上,检查AX和BX的值是否符合估计值。
⑨用T命令运行一步,观察程序方向(IP值)和CX值是否与估计一样,若不一样,检查程序是否有错。
⑩重复G、J与T命令,再检查AX的值是否正确。 用G命令使程序运行到结束,检查AX的值是否正确。 (3)求多个多字节数据的加法程序:
MOV DI,1000 NOV CX, MOV SI,2000 CLC
LOP:MOV AL,[SI] ADC [DI],AL INC SI INC DI
23 第 页
LOOP LOP INT 20 ①用A命令输入此程序。
②用E命令在1000H开始处输入一个8B被加数,在2000H开始处输人一个8B加数,均为低字节在前面。
③用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确? ④将INT 20H指令改为INT 3,有何区别?若不加这条指令,行不行?试一试。
三、实验设备:
请依据自己计算机写出硬件配置:
四、实验内容:
1.求两数和程序与两数多字节加减法程序。 2.求累加和程序。
3.求多个多字节数据的加法程序。
五、实验步骤:
详见附录《实验八:内存操作数及寻址方法实验》的“基本操作”部分。
六、实验结果:
实验内容制作成动画录像收存
24 第 页
附 录 部
25 第 页
分
实验七 调试程序DEBUG
实验目的
熟悉调试程序DEBUG,掌握调试程序DEBUG操作步骤。
实验内容
(1)掌握调试程序DEBUG的基本命令。
(2)在DEBUG下查看开机后执行的第一条指令。 (3)在DEBUG下查看数据在内存中的存放情况。
基本操作
1.调试程序DEBUG
DEBUG.EXE是DOS提供的一个调试汇编语言程序的程序,每个版本的DOS都带有该程序。 DEBUG程序采用的是命令行方式,使用不方便,但实用性强,是学习汇编语言程序、计算机硬件等课程的有效工具。
1)DEBUG的主要命令
DEBUG的主要命令如表实2-1所示。
表实2-1 DEBUG主要命令一览表
26 第 页
2)DEBUG程序的具体作用
(1)查看/修改寄存器、内存单元的内容。 (2)学习寻址方式和指令系统。
(3)了解计算机取指令,执行指令的工作过程。 (4)调试有问题的汇编语言程序。
注意:DEBUG下符号与标志的对应关系如表实2-2所示。
表实2-2 DEBUG下符号与标志位对应表
2.操作步骤
1)基本命令实验
D:\>DEBUG ; 进入DEBUG
-R ; 查看当前各寄存器的内容 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1271 ES=1271 SS=1271 CS=1271 IP=0100 NV UP EI PL NZ NA PO NC
1271:0100 B83412 MOV AX,1234
-D 0:0 ; 查看O:O~7FH内存块的内容 0000:0000 9E OF C9 00 65 04 70 00-16 00 EB 07 65 04 70 00 ....e.p.....e.p. 0000:0010 65 04 70 00 54 FF 00 F0-58 7F 00 F0 F5 E7 00 F0 e.p.T...X....? : :
-U FFFF:0 ; 反汇编FFFF:0处的指令 FFFF:0000 CDl9 INT 19 FFFF:0002 E000 LOOPNZ 0004 : :
-A ; 汇编一条指令 1271:0100 MOV AX,1234 1271:0103
-T = 100 ; 执行该指令 AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1271 ES=1271 SS=1271 CS=1271 IP=0103 NV UP EI PL NZ NA PO NC
27 第 页
1271:0103 E9C300 JMP 01C9
-R ; 查看指令执行后结果 AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI。0000 DS=1271 ES:1271 SS=1271 CS=1271 IP=0103 NV UP E1 PL NZ NA PO NC
-Q ; 退出DEBUG D:\>
2)在DEBUG下查看开机后执行的第一条指令
D:\>DEBUG ; 进入DEBUG
-u FFFF:0 ; 反汇编FFFF:0处的指令 : ; 显示指令 -Q ; 退出DEBUG
3)在DEBuG下查看数据在内存中的存放情况
D:\>DEBUG ; 进入DEBUG
-A ; 汇编一条传送指令 1693:0100 MOV word ptr[O],1234 1693:0106
-T ; 执行该指令 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1693 ES=1693 SS=1693 CS=1693 IP=0106 NV UP E工PL NZ NA PO NC 1693:0106 50 PUSH AX
-D DS:0 ; 查看结果 1693:0000 34 12 FF 9E OO 9A EE FE-lD F0 4F 03 18 10 8A 03 1693:0010 18 10 17 03 18 10 23 OE-0l 0l 01 00 02 FF FF FF
-Q ; 退出DEBUG 讨论
1.开机后的第一条指令应该在内存的什么区域?是在ROM还是RAM中?为什么? 2.开机后执行的第一条指令的地址是否固定?为什么?
当 PC 的电源打开后,PC 硬件产生RESET信号给CPU ,RESET结束后 80x86 结构的 CPU 将自动进入实模式,并从地址 0xFFFF0 开始自动执行程序代码,这个地址通常是 ROM-BIOS 中的 地址。\
第一步: 当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向cpu发出并保持一个reset(重置)信号,让cpu内部自动恢复到初始状态,但cpu在此刻不会马上执行指令。当芯
28 第 页
片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去reset信号(如果是手工按下计算机面板上的reset按钮来重启机器,那么松开该按钮时芯片组就会撤去reset信号),cpu马上就从地址ffff0h处开始执行指令,从前面的介绍可知,这个地址实际上在系统bios的地址范围内,无论是award bios还是ami bios,放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。
第二步: 系统bios的启动代码首先要做的事情就是进行post(power-on self test,加电后自检),post的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于post是最早进行的检测过程,此时显卡还没有初始化,如果系统bios在进行post的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640k常规内存),那么系统bios就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,post过程进行得非常快,我们几乎无法感觉到它的存在,post结束之后就会调用其它代码来进行更完整的硬件检测。
第三步: 接下来系统bios将查找显卡的bios,前面说过,存放显卡bios的rom芯片的起始地址通常设在c0000h处,系统bios在这个地方找到显卡bios之后就调用它的初始化代码,由显卡bios来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统bios接着会查找其它设备的bios程序,找到之后同样要调用这些bios内部的初始化代码来初始化相关的设备。
第四步: 查找完所有其它设备的bios之后,系统bios将显示出它自己的启动画面,其中包括有系统bios的类型、序列号和版本号等内容。
29 第 页
第五步: 接着系统bios将检测和显示cpu的类型和工作频率,然后开始测试所有的ram,并同时在屏幕上显示内存测试的进度,我们可以在cmos设置中自行决定使用简单耗时少或者详细耗时多的测试方式。
第六步: 内存测试通过之后,系统bios将开始检测系统中安装的一些标准硬件设备,包括硬盘、cd-rom、串口、并口、软驱等设备,另外绝大多数较新版本的系统bios在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。
第七步: 标准设备检测完毕后,系统bios内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统bios都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、dma通道和i/o端口等资源。
第八步: 到这一步为止,所有硬件都已经检测配置完毕了,多数系统bios会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。
30 第 页
实验八 内存操作数及寻址方法
实验目的
(1)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
(2)掌握数据在内存中的存放方式和内存操作数的几种寻址方式。 (3)掌握简单指令的执行过程。
实验内容
(1)求两数和程序与两数多字节加减法程序。 (2)求累加和程序。
(3)求多个多字节数据的加法程序。
实验器材
依据自己计算机写出硬件配置。
基本操作
31 第 页
(1)求两数和程序与两数多字节加减法程序。
MOV AX,1234 直接寻址 MOV [1000],AX MOV BX,1002
MOV BYTE PTR[BX],20 MOV DL,39 INC BX
MOV [BX],DL DEC DL MOV SI,3
MOV [BX+SI],DL MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846
①用A命令输入上述程序,并用T命令逐条运行。 ②每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容,注明是什么寻址方式。
注意:D命令显示结果中右边的AscII字符及双字节数存放法。
注意将相应的信息写在对应的语句旁,用注释方式
(2)求累加和程序。
MOV BX,1000 MOV CX,10 SUB AX,AX LOP:ADD AL,[BX] ADC AH,O INC BX J:LOOP LOP INT3
①用A命令将程序输入到100H开始的内存中,在输入时记下标号LOP和J的实际地址,在输入LOOP指令时LOP用实际地址值代替。
②用命令N AA将此程序命名为文件AA(文件名可任取)。
③用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)。 ④用命令w 100将此程序存到AA命名的磁盘文件中。 ⑤用命令Q退出DEBUG。 ⑥用命令DEBUG AA再次调入DEBUG和文件AA,可用u命令检查调入程序。若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 ⑦用E命令在内存地址1000H处输入16个数字。
⑧用命令G—100J(J用实际地址代替),使程序运行并停在断点J上,检查AX和BX的值是否符合估计值。
⑨用T命令运行一步,观察程序方向(IP值)和CX值是否与估计一样,若不一样,检查
32 第 页
程序是否有错。
⑩重复G、J与T命令,再检查AX的值是否正确。 用G命令使程序运行到结束,检查AX的值是否正确。
(3)求多个多字节数据的加法程序。
MOV DI,1000 NOV CX, MOV SI,2000 CLC
LOP:MOV AL,[SI] ADC [DI],AL INC SI INC DI LOOP LOP INT 20
①用A命令输入此程序。
②用E命令在1000H开始处输入一个8B被加数,在2000H开始处输人一个8B加数,均为低字节在前面。
③用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确? ④将INT 20H指令改为INT 3,有何区别?若不加这条指令,行不行?试一试。
33 第 页
姬 神 出 品 必 属 精
34 第 页
品
35 第 页