微机接口实验报告

时间:2024.4.5

武汉大学

微机接口实验报告


目录

目录... 2

实验一 数据传送... 3

实验二 算术逻辑运算及移位操作... 8

实验三 算术逻辑运算及移位操作... 13

实验四 字符及字符串的输入和输出... 15

《微机原理与接口技术》软件编程题目... 18


实验一 数据传送

一、 实验目的

1. 熟悉8086指令系统的数据传送指令及8086的寻址方式。

2. 利用EMU调试工具来调试汇编语言程序。

二、 实验预习要求

1. 复习8086指令系统中的数据传送类指令和8086的寻址方式。

2. 预习EMU的使用方法:

3. 按照题目要求预先编写好实验中的程序段。

三、 实验任务

1.通过下述程序段的输入和执行来熟悉EMU的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下:

MOV BL,08H

MOV CL,BL

MOV AX,03FFH

MOV BX,AX

MOV DS:[0020H],BX

2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下:

MOV AX,0102H

MOV BX,0304H

MOV CX,0506H

MOV DX,0708H

PUSH AX

PUSH BX

PUSH CX

PUSH DX

出栈段程序:

POP CX

POP DX

POP BX

POP AX

RET

3. 指出下列指令的错误并加以改正,上机验证之。

(1) MOV [BX],[SI]

存储器操作数不可直接传递,改为MOV [BX], SI

(2) MOV AH,BX

操作数字长不相同,改为MOV AH,BH

(3) MOV AX,[SI][DI]

基址?渲费爸肥保?辉市砹奖渲芳拇嫫髯楹显谝黄穑?奈?/p>

MOV AX,[BX][DI]

(4) MOV BYTE PTR[BX],2000H

字长不同,改为MOV WORD PTR[BX],2000H

(5) MOV CS,AX

段寄存器CS内容不通过MOV指令改写

(6) MOV DS,2000H

不能用立即数直接给段寄存器赋值,改为

MOV AX, 2000H

MOV DS, AX

5. 将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。

(1)直接寻址

MOV AX , [1000H]

MOV [2010H],AX

(2)寄存器间接寻址

MOV BX,1000H

MOV AX, [ BX]

MOV [2020H], AX

(3)变址寻址

MOV SI,1000H

MOV AX, [SI]

MOV [2020H], AX

(4)寄存器相对寻址

MOV AX,[1000H]

MOV BX,1000H

MOV 1020H[BX] ,AX

6. 设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:0010H单元中的内容为3333H。将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:0010H单元中的内容进行交换。试编写程序段,并上机验证结果。

MOV AX,1111H

MOV BX,2222H

MOV [0010H],3333H

MOV DX,BX

MOV BX,AX

MOV AX,DX

MOV DX,BX

MOV BX, [0010H]

MOV [0010H],DX

7. 设(DS)=1000H,(ES)=2000H,有关存储器的内容如图1.5所示。要求将DS段的内容传送到AX寄存器,ES段的内容传送到BX寄存器,试编写程序段。

MOV [1000H],0EEFFH

MOV ES:[2000H],0CCDDH

MOV AX,[1000H]

MOV BX,ES:[2000H]

四、实验报告要求

小结EMU的使用方法:

1.首先选择是建立.COM 文件还是.EXE文件。这取决于是要编写运行一个程序段还是可执行程序。本节均是验证程序段。故采用.COM文件。


实验二 算术逻辑运算及移位操作

一、 实验目的

1.熟悉算术逻辑运算指令和移位指令的功能。

2.了解标志寄存器各标志位的意义和指令执行对它的影响。

二、 实验预习要求

1.复习8086指令系统中的算术逻辑类指令和移位指令。

2.按照题目要求在实验前编写好实验中的程序段。

三、 实验任务

1. 实验程序段及结果表格如表1.2:

2.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程序段并上机验证结果。

程序如下:

MOV BX,0010H

MOV [BX],10H

MOV [0001H][BX],04H

MOV [0002H][BX],30H

MOV AL,[BX]

ADD AL,[0001H][BX]

ADD AL,[0002H][BX]

MOV [0003H][BX],AL

MOV AL,BL

MUL [0001H][BX]

MUL [0002H][BX]

MOV [0004H][BX],AX

3.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)

(1) 传送15H到AL寄存器;

(2) 再将AL的内容乘以2;

(3) 接着传送15H到BL寄存器;

(4) 最后把AL的内容乘以BL的内容。

程序如下:

MOV AL,15H

MOV DX,2

MUL DX

MOV BL,15H

MUL BL

RET

4.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的商=?

(1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;

(2) 把DS:1000H单元中的数据传送到AX寄存器;

(3) 把AX寄存器的内容算术右移二位;

(4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;

(5) 最后把商存入字节单元DS:1003H中。

程序如下:

MOV [1000H],2058H

MOV [1002H],12H

MOV AX,[1000H]

MOV CL,2

SAR AX,CL

DIV [1002H]

MOV [1003H],AL

RET

5.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。

(1) 将第4条比较指令语句填写完整(划线处)。

MOV SI,0010H

NEXT: MOV WORD PTR[SI],0

ADD SI,2

CMP SI,填写18)

JNE NEXT

HLT

(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),则上述程序段应如何修改?

程序如下:

MOV SI,0020H

NEXT: MOV WORD PTR[SI],0

SUB SI,2

CMP SI,18

JNE NEXT

HLT

6. 输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。

功能是将第一个数除以2,第二个数乘以4

四、 实验报告要求

1. 简要说明ADD、SUB、AND、OR指令对标志位的影响。

ADD:对6个状态标志位都会影响;SUB:影响与ADD指令影响完成相同;

AND: 影响6个标志位,并使CF=OF=0;OR: 影响6个标志位,并使CF=OF=0

2. 简要说明一般移位指令与循环移位指令之间的主要区别。

一般移位: 将操作数右移m位,同时每移一位,左边的符号位保持不变,移出的最低位进入标志位CF。对于有符号数和无符号数而言,算术右移相当于除以2.;

循环移位:循环移位指令的操作数形式与移位指令相同,如果仅移动一次,可以用1表示;如果需要移位多次,则需用CL寄存器表示移位次数。


实验三 算术逻辑运算及移位操作

一、 实验目的

1.熟悉串操作指令的功能。

2.了解串操作指令的使用方法。

二、 实验预习要求

1.复习8086指令系统中的串操作类指令。

2.按照题目要求在实验前编写好实验中的程序段。

三、 实验任务

1. 输入以下程序段并运行之,回答后面的问题。

CLD

MOV DI,1000H

MOV AX,55AAH

MOV CX,10H

REP STOSW

(1) 从DS:1000H开始的16个字单元的内容是什么?

(2) (DI)= ?(CX)= ?,并解释其原因。

2. 在上题的基础上,再输入以下程序段并运行之,回答后面的问题。

MOV SI,1000H

MOV DI,2000H

MOV CX,20H

REP MOVSB

(1) 从DS:2000H开始的16个字单元的内容是什么?

(2) (SI)= ?(DI)= ?(CX)= ?,并分析之。

3. 从DS:1000H开始存放有一个字符串”This is a string”,要求把这个字符串从后往前传送到DS:2000H开始的内存区域中(即传送结束后,从DS:2000H开始的内存单元的内容为”gnirts a si siht”),试编写程序段并上机验证之。

#MAKE_COM#

ORG 100H

JMP START

STR DB 'THIS IS A STRING',13,10

START: LEA SI, STR

MOV DI,1000H

MOV CX,10H

CLD

REP MOVSB

MOV CX,10H

MOV SI,1000H

MOV DI,200FH

AGAIN: CLD

LODSB

STD

STOSB

LOOP AGAIN

四、 实验报告要求

1. 简要说明执行串操作指令之前应初始化哪些寄存器和标志位。

应预设源串指针DS,SI,目标串指针ES,DI,重复次数CX,及操作方向DF

2. 总结串操作指令的用途及使用方法。


实验四 字符及字符串的输入和输出

一、 实验目的

1.熟悉如何进行字符及字符串的输入输出。

2.掌握简单的DOS系统功能调用。

二、 实验预习要求

1.复习系统功能调用的1、2、9、10号功能。

2.按照题目要求预先编写好实验中的程序段。

三、 实验任务

1. 要在屏幕上显示一个字符串“Hello, world”,写出该字符串变量的定义语句和显示这个字符串的程序段。上机验证之。

DSEG SEGMENT

STR DB ‘Hello,world’, 0DH,0AH,’$’

DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG,DS: DSEG

START: MOV AX,DSEG

MOV DS,AX

LEA DX,STR

MOV AH,09H

INT 21H

MOV AH,4CH

INT 21H

CSEG ENDS

END START

2. 按6行×16列的格式顺序显示ASCII码为20H到7FH之间的所有字符,即每16个字符为一行,共6行。每行中相邻的两个字符之间用空格字符分隔开。试编写程序段并上机运行验证。提示:程序段包括两层循环,内循环次数为16,每次内循环显示一个字符和一个空格字符;外循环次数为6,每个外循环显示一行字符并显示一个回车符(0DH)和一个换行符(0AH)。

程序如下:

#MAKE_EXE#

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE

START:

MOV AH, 02H

MOV DL, 20H

MOV BL, 6

E:

MOV CX, 16

L:

INT 21H

PUSH DX

MOV AH, 02H

MOV DL, 0

INT 21H

MOV AH, 02H

MOV DL, 0

INT 21H

POP DX

INC DL

LOOP L

PUSH DX

MOV AH, 02H

MOV DL, 0DH

INT 21H

MOV AH, 02H

MOV DL, 0AH

INT 21H

POP DX

DEC BL

CMP BL, 0

JNE AGAIN

JE E

EXIT:

MOV AX, 4CH

INT 21H

MAIN ENDP

CODE ENDS

END START

四、 实验报告要求

1. 1、2、9、10号功能的输入输出参数有哪些?分别放在什么寄存器中?

2. 总结一下,如何实现字符及字符串的输入输出。

字符串输入:MOV AH, 0AH ;功能号0AH

LEA DX, <字符串缓冲区首地址>; 字符串在内存中的存放地址(由DS:DX定)

INT 21H

字符串输出:显示字符串(功能号=9)

MOV AH, 9

LEA DX, <字符串> ; DS:DX待输出字符串的偏移地址

INT 21H

注意:被显示的字符串必须以’$’结束。


《微机原理与接口技术》软件编程题目

(0)、设MEM1中有一个任意字符串STRING,以ASCII码’$’结尾,假定MEM1中的字符串不会导致数据段的溢出,编写一个程序,在STRING中找到第一次出现“OK”这个字母序列的首地址,如果没有这个序列,则直接返回0,并在显示器(LED)上显示。

程序及结果如下所示:

#MAKE_EXE#

DATA SEGMENT

STRING DB 'DGDFEROKGVDF',0DH,0AH,'$'

STR DB 'OK'0DH,0AH,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START :

LEA DX,STR

MOV SI,DX

INC SI

LEA DI , STRING

CLD MOV AL,[SI]

SCAN: REPNE SCASB

JZ MATCH NO: MOV DL,'0'

JMP DESPLY ; MATCH:

REPZ CMPSB

POP DI

POP SI

JZ FOUND

JNZ NO

JMP SCAN

DESPLY:

MOV AH , 02H INT 21H

FOUND: DEC DI

HLT

CODE ENDS

END START

更多相关推荐:
微机原理与接口技术 实验报告

微机原理与接口技术实验报告学院计算机与通信工程学院专业计算机科学与技术班级学号姓名实验一8259中断控制器应用实验一实验目的1掌握PC机中断处理系统的基本原理2掌握可编程中断控制器8259的应用编程方法二实验内...

微机接口实验报告

微机原理与接口技术实验报告微机原理与接口技术系别专业班级姓名学号指导教师学年第学期微机原理与接口原理实验报告微机原理与接口技术实验报告实验一1实验目的寻找两个字符串中不同的字符2源程序代码datasegment...

微机原理完整实验报告+程序

实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理二实验内容1实验原理本实验原理图如图1所示8253A的A0A1接系统地址总线A0...

微机接口实验报告一下

汇编语言程序上机实验报告实验一下

微机原理与接口实验报告

微机原理与接口实验实验报告第一部分软件实验实验一实验二1实验目的熟悉软件环境能够在Dos系统下编写汇编语言程序和汇编的全过程2实验内容DOS环境下汇编的快速入门3实验步骤CDEnter建议大家的文件都建立在最后...

微机接口机原理实验报告

微机原理及接口技术实验报告学号xxxxxx姓名xxxxx专业网络工程实验一系统认知11实验目的掌握TD系列微机原理及接口技术教学实验系统的操作熟悉Wmd86联机集成开发调试软件的操作环境通过顺序程序设计与分支程...

微机原理与接口技术实验一实验报告

实验题目实验环境熟悉与简单程序设计实验目的1掌握Masm的下载2掌握DEBUG调试程序的使用方法3掌握简单程序的设计方法实验内容1打开百度首页输入下载masm2用汇编语言编写11的计算过程实验准备1熟练掌握所学...

微机原理与接口技术实验报告

微机原理与接口技术实验报告学生姓名学生学号学生班级实验一认识Tddebug集成操作软件一实验内容一实验题目数据传送实验1编程将数据段中的一个字符串传送到附加段中并输出附加段中的目标字符串到屏幕上2修改此程序采用...

微机原理实验报告(8255并口实验)

深圳大学实验报告课程名称学院信息工程学院实验时间实验报告提交时间教务处制

微机原理与接口技术实验报告 全实例代码

实验一上机练习实验目的1掌握用编辑软件编辑程序文本的方法在DOS环境下熟练掌握用MASM50宏汇编程序对ASM文件进行编译连接等操作步骤2熟悉用DEBUG调试程序实验要求选取教科书中一典型例题用编辑软件在PC机...

微机原理与接口技术实验报告

目录实验一数据传送2实验二算术运算8实验三代码转换15实验四程序的基本结构练习21实验五存储器RAM6264扩展错误未定义书签实验六可编程并行接口8255扩展错误未定义书签实验七可编程计数定时器8253扩展错误...

微机原理与接口技术实验报告

目录目录实验一汇编语言程序设计开发环境2实验二BCD数运算与十进制调整6实验三键盘输入与回显10实验四字符串匹配13实验五用递归计算阶乘17实验六中断服务子程序设计201实验一汇编语言程序设计开发环境实验一汇编...

微机接口实验报告(31篇)