微机原理实验报告 联系客服

发布时间 : 星期三 文章微机原理实验报告更新完毕开始阅读cbd2e0450b4c2e3f56276345

实验课程:微机原理及接口技术 姓名: 学号:

成绩 班级: 实验日期: 年 月 日 批阅老师: 实验名称:拆字、拼字程序

一、实验预习内容

1、8086/8088有14个16位寄存器,按其用途可分为8个 寄存器、2个 寄存器和4个 寄存器。

2、通用寄存器分别是 。代码段寄存器是 ,数据段寄存器是 ,堆栈段寄存器是 。

3、在数据寄存器中,被称为累加器的 用于算术运算外,还用于输入/输出等操作。被称为基址寄存器的 它可作为存储器指针来使用。被称为计数寄存器的 在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用 来指明移位的位数。而数据寄存器 在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

4、堆栈指针寄存器 与SS配合使用,可指向目前的堆栈位置;基址指针寄存器 可用作SS的一个相对基址位置;源变址寄存器 可用来存放相对于DS段之源变址指针;目的变址寄存器 可用来存放相对于 ES 段之目的变址指针。指令指针寄存器 用来存放代码段中的偏移地址。

5、在8088指令的寻址方式中,下列各指令中属于立即寻址的是 ,属于寄存器寻址的是 ,属于直接寻址的是 ,属于寄存器间接寻址的是 ,属于基址寻址的是 ,属于基址加变址寻址的是 。

A、MOV AX,2000H B、MOV AX,[2000H] C、MOV AX,CX D、MOV AX,[DI] E、MOV AX,[BX][SI] F、MOV AX,[BP]

6、在DEBUG下,反汇编命令是 ,汇编命令是 ,显示显示内存单元内容的命令是 ,修改内存单元内容的命令 ,检查和修改寄存器内容的命令是 ,逐步追踪执行命令是 ,连续执行程序命令是 ,退出命令是 。 二、实验内容与过程

1

1、设DS为当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令在存储器偏移地址300H~304H单元中连续按顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么,并指出这条指令是什么寻址方式。

程序清单如下: MOV AX,0000H MOV BX,0300H MOV SI,0002H MOV DI,0302H

MOV AX,BX AX的内容: ; MOV AX,0302H AX的内容: ; MOV AX,[DI] AX的内容: ; MOV AX,[BX] AX的内容: ; MOV AX,0001[BX] AX的内容: ; MOV AX,[BX][SI] AX的内容: ; MOV AX,0002[DI] AX的内容: ; HLT

(1)在汇编软件环境下,首先输入程序,并在建立的文件夹下进行保存;然后进行编译生成 ,发现问题进行编辑修改再进行编译;再进行链接生成 。

(2)用 E 命令加带数据段物理地址 ,将偏移地址300H~304H单元中连续按顺序装入 。

(4)用 命令单步跟踪执行程序,查看 寄存器的内容,根据每条指令执行情况,记录其所存放的数据。

2、把4000H单元的内容拆开,高位送4001H单元,低位送4002H单元。 拆字程序清单如下,按要求在填空处完善注释。 CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START: MOV BX,4000H ;把地址单元4000H给BX寄存器 MOV [BX],5BH ; MOV AL,[BX] ;把4000H单元的内容给AL MOV AH,AL ;再把4000H单元的内容给AH

2

MOV CL,04 ;

SHR AH,CL ; ADD BX,01 (或INC BX) ;地址单元加1

MOV [BX],AH ; AND AL,0FH ;屏蔽掉AL中的高四位 ADD BX,01 (或INC BX) ;地址单元加1

MOV [BX],AL ; HLT

CODES ENDS ;程序结束 END START

查看4000H起始的三个单元内容的命令为 ,从4000H起三个地址单元的保存的数据依次为: 。

3、把2000H、2001H的单元的低4位拼成一个字,送入2002H单元(第一个字的低4位和第二个字的低4位拼成一个字)。完善程序,并用DEBUG进行调试。 CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX

MOV BX,2000H ;把地址单元2000H给BX寄存器

;把2000H单元所要拼的字置为F6H ;把2001H单元所要拼的字置为28H MOV AL,[BX] ;把2000H单元的内容给AL MOV AH,[BX+1] ;把2001H单元的内容给AH ;屏蔽掉AL中的高四位 MOV CL,04H ;设置移位次数为4 ;AH的内容左移4位 ;进行拼字 ADD BX,02H ;地址单元到2002H

;将拼好的字保存在2002H单元 HLT

CODES ENDS ;程序结束 END START

3

使用 命令查看存放在2000H单元起三个地址单元中的数据分别是:

三、实验总结

1、汇编程序的调试过程有关问题:

①输入源程序代码并进行存盘;②对文件进行 ,若发现错误可根据错误信息进行修改,直到无错为止;③在DEBUG下,用相关命令进行查看、修改或执行汇编程序,常用的相关命令分别是 ; ④在DEBUG下,程序运行的结果一般存放在相关 中,或者存放在数据段 偏移地址 单元中。⑤在显示结果中所看到的 分别表示溢出、方向、中断、符号、零、辅助进位、奇偶、进位标志状态是复位状态。 2、其它相关问题:

①汇编程序保存的文件名(及文件夹)必须符合 命名要求,一般由26个英文字母和10个数字组成,文件名长度不准超过 个字符。

②输入程序代码指令其英文符号的 或者 输入都一样,而指令间该有的 不能省略,其指令和标点符号必须是在 状态下输入方可有效。

③程序代码和程序数据一般存放在不同的 下,若存在同一段地址下,其偏移地址可不同,且偏移地址间要有一定的相隔空间。偏移地址从 开始,到最大 结束。

3、所有移位指令的目标操作数,只允许是 ,指令中的计数值可以是常数1,即移位1次,如果移位多于1次,则必须将移位数N事先装入 寄存器中,本指令最多可移位255位。一般来说,当目标操作数为无符号数时采用 指令;若目标操作数为有符号数时,则采用 指令。 4、在逻辑运算指令中,仅 指令不影响标志位;其它指令 执行后,除AF状态不定外,总是使OF=CF=0,ZF、SF、PF则根据运算结果被置位或复位。

4