中国民航大学微机原理实验报告

更新时间:2023-11-06 05:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中国民航大学《微机原理》实验报告

姓名:王鹏飞 学号:111142222 指导教师:谈娴茹

实验一 Debug命令及汇编指令和寻址的应用

一、 实验目的:

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

3、 了解数据在内存的存放方式和内存操作数的几种寻址方式; 4、 了解指令的执行过程。 二、 实验内容: 1、设堆栈段指针SP=1000H,AX=4000H,BX=8000H;请编写一段程序将 AX 和BX的内容进行交换。要求:用三种不同的方法。

方法一:

DATA SEGMENT BUF DB ? DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,4000H MOV BX,8000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二:

DATA SEGMENT BUF DB ? DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,4000H MOV BX,8000H XCHG AX,BX

中国民航大学《微机原理》实验报告

CODE ENDS END START 方法三:

DATA SEGMENT BUF DB ? DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

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

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

MOV BX,1000H MOV AX,BX MOV AX,[BX] MOV AX,20[BX]

要求:在执行以上指令时,记下当时DS数据段的值,记下每条指令执行后的AX的结果。将以上指令的"BX"修改为DX执行指令,观察结果及结果产生的原因。 答:DS数据段的值为13D8H,MOV AX,BX 执行后AX的值为1000H,MOV AX,[BX] 执行后AX的值为3325H,MOV AX,20[BX] 执行后AX的值为14ABH。第一条指令是将1000H送入BX寄存器中,指令二是将BX中的值送入AX中,指令三是将存储器中地址为13D8H:1000H字单元内的值送入AX中,指令四是将存储器地址为13D8H:1020H字单元的值送入AX中。

3、已知有如下程序段:

MOV AX,3421H MOV CL,4

在以上程序段的基础上,分别执行以下指令:

ROL AX,CL ROR AX,CL SHL AX,CL SHR AX,CL SAR AX,CL RCL AX,CL RCR AX,CL

试在DEBUG下用A命令汇编以上程序段,用T命令跟踪,观察以下内容:

中国民航大学《微机原理》实验报告

(1) 每条指令执行完后,AX寄存器的内容是什么?

(2) 每条指令执行完成后,进位、符号和零标志位的值有什么变化?

答:ROL AX,CL AX=4213H,CF=1,SF=0,ZF=0; ROR AX,CL AX=1342H,CF=0,SF=0,ZF=0; SHL AX,CL AX=3420H,CF=1,SF=0,ZF=0; SHR AX,CL AX=0342H,CF=0,SF=0,ZF=0; SAR AX,CL AX=0342H,CF=0,SF=0,ZF=0; RCL AX,CL AX=4213H,CF=1,SF=0,ZF=0; RCR AX,CL AX=3342H,CF=0,SF=0,ZF=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的内容。 答:(1)DATA SEGMENT

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

BUF DB 20 DUP (?) DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK 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 (2)AX=30H

三、心得及收获

通过此次实验,我已经熟练掌握了程序上机过程,熟悉了程序的汇编、链接、调试的步骤,掌握了Debug常用命令的功能及命令格式。在程序汇编时发现编

中国民航大学《微机原理》实验报告

写程序存在很多错误,无法生成OBJ文件,原因在于第一次上机编写程序,汇编语言命令和程序格式还不是很熟练,对部分命令功能掌握的并不准确,还有输入上的一些错误等,最后根据错误提示解决了问题,完成了实验,这也让我对这些语言命令更熟悉。

实验二 汇编语言程序的调试与运行

一、 实验目的

1、 掌握汇编语言的开发环境和运行过程; 2、 熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法; 3、 熟悉逻辑类指令的用法; 4、 掌握传送类指令的功能; 5、 掌握顺序程序设计的基本方法。 二、 实验内容

1、 求单元内存中所定义的两个字节变量的连续内容之和。要求使用三种

不同的方法实现,下边给出一种方法,请自己编写出另外两种方法的程序(提示:(1)用定义字的形式实现;(2)用直接寻址方法实现。

DATA SEGMENT A DB 5CH,85H B DB 43H,0ABH DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV SI,0

MOV AL,A[SI] ADD AL,B[SI] MOV A[SI], AL INC SI

MOV AL,A[SI] ADC AL,B[SI] MOV A[SI],AL MOV AH,4CH INT 21H

中国民航大学《微机原理》实验报告

CODE ENDS

END START 定义字法:

DATA SEGMENT A DW 855CH B DW 0AB43H C DW ? DATA ENDS

STACK SEGMENT STACK DW 10 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV SI,0

MOV AX,A[SI] ADD AX,B[SI] MOV C[SI],AX MOV AH,4CH INT 21H

CODE ENDS END START

直接寻址:

DATA SEGMENT A DB 5CH,85H B DB 43H,0ABH DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AL,[0000] ADD AL,[0002] MOV [0000],AL MOV AL,[0001] ADC AL,[0003] MOV [0001],AL MOV AH,4CH INT 21H

本文来源:https://www.bwwdw.com/article/7zp2.html

Top