微机原理实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名:学号:

班级:实验日期:年月日批阅老师:

实验名称:拆字、拼字程序

一、实验预习内容

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、设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

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

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

三、实验总结

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

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

2、其它相关问题:

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

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

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

3、所有移位指令的目标操作数,只允许是,指令中的计数值可以是常数1,即移位1次,如果移位多于1次,则必须将移位数N事先装入寄存器中,本指令最多可移位255位。一般来说,当目标操作数为无符号数时采用指令;若目标操作数为有符号数时,则采用指令。

4、在逻辑运算指令中,仅指令不影响标志位;其它指令

执行后,除AF状态不定外,总是使OF=CF=0,ZF、SF、PF则根据运算结果被置位或复位。

相关文档
最新文档