微机原理实验报告 下载本文

内容发布更新时间 : 2024/7/3 6:27:29星期一 下面是文章的全部内容请认真阅读。

实验1 DEBUG命令及汇编指令和寻址的应用

一、实验目的和要求

1、掌握DEBUG的基本命令及其功能,学会用DEBUG调试程序; 2、掌握8086CPU指令的功能,体会寄存器的作用;

3、了解数据在指令中的存放方式和内存操作数的几种寻址方式; 4、了解指令的执行过程。 二、实验内容

1、设堆栈指针SP=1000H,AX=4000H,BX=8000H;请编一程序段将AX和BX的内 容进行交换。要求:用3种方法实现。

答:方法一 CODE SEGMENT ASSUME CS:CODE START: MOV AX,4000H MOV BX,8000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二 CODE SEGMENT ASSUME CS:CODE START: MOV AX,4000H MOV BX,8000H XCHG AX,BX CODE ENDS END START

方法三CODE SEGMENT

ASSUME CS:CODE START: MOV AX,4000H MOV BX,8000H PUSH AX PUSH BX POP AX POP BX CODE ENDS END START

2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。

MOV BX,1000H 立即寻址,将1000H送给BX MOV AX,BX 寄存器寻址,将BX内容送AX

MOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AX MOV AX,20[BX] 寄存器相对寻址,将DS:BX+20内存单元内容送AX

当时DS数据段的值0B47H,每条指令执行后AX的值分别为4000H,1000H,1AEBH, BB00H。将指令中“bx”修改为dx执行指令,结果:AX值BB00H,1000H,错误, 错误。错误的原因是DX不为基址寄存器。 3、已知有如下程序段:

MOV AX,3421H MOV CL,4

在以上程序段的基础上,分别执行以下指令:起始时刻 CF=0,ZF=0,SF=0

CF SF ZF

ROL AX,CL AX=4213H 1 0 0 ROR AX,CL AX=1342H 0 0 0 SHL AX,CL AX=4210H 1 0 0 SHR AX,CL AX=0342H 0 0 0 SAR AX,CL AX=0342H 0 0 0 RCL AX,CL AX=4211H 1 0 0

RCR AX,CL AX=2342H 0 0 0 4.设有以下部分程序段实验

TABLE DW 10H,20H,30H,40H,50H

ENTRY DW 4 …

LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] …

要求:1、要求将以上程序补充成为一个完整的汇编程序。

2、在1的基础上编辑、调试并运行程序,记录在执行MOV AX,[BX]后AX的内容。

答:DATA SEGMENT

TABLE DW 10H,20H,30H,40H,50H ENTRY DW 4 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX]

MOV AH,4CH INT 21H CODE ENDS

END START 实验截图:

编译成功

连接成功,生成exe文件。

BX开始代表偏移量,即指向数组的第一个字节,在加上ENTRY,即加上4以后,[BX]即代