微机原理及接口技术
实 验 指 导 书
贵阳学院电子与通信工程学院
2013
掌握8088汇编语言程序设计和调试方法,熟悉键盘操作。
二、实验内容
把RAM区(数据段)内4000H~40FFH单元的内容清零。
三、实验步骤
1、画出程序流程框图。
2、编写汇编源程序。
3、将源程序编译为可执行文件。
4、使用DEBUG用连续或单步方式运行程序,检查4000~40FFH内容执行程序前后的变化。
四、数据记录
1、程序流程图。
2、源程序。
3、实验结果。
五、思考
假使4000H~40FFH中内容改成FF,如何修改程序?
附:参考程序框图
参考程序
DATA SEGMENT
ORG 4000H
DB 256 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV BX,4000H
MOV AX,0000H
MOV CX,0080H
L1: MOV [BX],AX
INC BX
INC BX
LOOP L1
MOV AH,4CH
INT 21H
CODE ENDS
END START
程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储器中可能有三种情况,如下图:
对于两个数据块分离的情况,如图(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。可以得出如下结论:当源数据首址 > 目的块首址时,从数据块首址开始传送数据。当源数据块首址 < 目的块首址时,从数据块末地址开始传送数据。
三、实验步骤
1、画出程序流程框图。
2、编写汇编源程序。
3、将源程序编译为可执行文件。
4、使用DEBUG用连续或单步方式运行程序,检查4200~420FH内容执行程序前后的变化。
四、数据记录
1、程序流程图。
2、源程序。
3、实验结果。
五、思考
采用串操作指令实现程序。
附:参考程序框图
参考程序
DATA SEGMENT
ORG 4100H
STRING1 DB 16 DUP(7)
ORG 4200H
STRING2 DB 16 DUP(6)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV CX,0010H
MOV SI,4100H
MOV DI,4200H
CMP SI,DI
JA A42
ADD SI,CX
ADD DI,CX
A41: DEC SI
DEC DI
MOV AL, [SI]
MOV [DI],AL
LOOP A41
JMP EXIT
A42: MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
LOOP A42
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
实验三 基于虚拟平台的并行接口综合应用
一、 实验目的
了解数字接口芯片基本原理,掌握8255A的使用方法、熟悉PROTEUS仿真平台的使用。
二、 实验内容
由8255A的A口输入开关量,经过CPU处理后送8255A的B口。由B口接的LED显示开关量。
三、实验步骤
1、搭建实验仿真用电路。
2、编写汇编源程序。
3、将源程序编译。
4、运行程序改变开关量的输入,观查LED显示。
四、数据记录
1、电路原理图。
2、程序流程图。
3、实验结果。
微机原理与接口技术
实验指导书
编者:王亭岭
华北水利水电学院
电气学院自动化教研室
二零##年三月
目 录
实验一 标志寄存器应用... 1
实验二 指令寻址方式练习... 4
实验三 分支结构程序设计... 6
实验四 循环结构程序设计... 7
实验五 子程序结构程序设计... 8
实验六 DOS系统功能调用程序设计... 12
实验七 BIOS中断调用程序设计... 14
实验八 定时器中断程序设计... 16
一、实验目的与要求
1.掌握汇编程序的编译过程;
2.掌握8086的标志寄存器的特点。
二、实验内容
练习识别8086标志寄存器的各种标志位。PC机中状态位的表示如下:
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
DATA SEGMENT
A DW 123
B DW 456
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE , DS:DATA
START: MOV AX , DATA
MOV DS , AX
MOV AX , A
SUB AX , B
MOV SUM , AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
五、实验步骤
步骤一、用鼠标单击开始菜单,单击运行。如下图所示:
步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示:
步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:
1.C:\>D: 回车
2.D:\ >CD MASM 回车
3.D:\MASM>MASM SY1.ASM 回车
4.D:\MASM>LINK SY1.OBJ 回车
步骤四、在命令提示行中运行并调试汇编程序。如下图所示:
1.D:\MASM>SY1.EXE 回车
2.D:\MASM>DEBUG SY1.EXE 回车
六、实验结论
1.程序运行后变量SUM的值是多少?
2.程序运行前后标志寄存器的各标志位有何变化?
3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求
1.掌握汇编语言调试工具(DEBUG)的基本使用方法;
2.掌握8086的寻址方式。
二、实验内容
练习识别8086相关指令的寻址方式。
DEBUG的命令及其功能:
其中<…>表示输入的内容;[…]表示为可选项。
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
DSEG SEGMENT
ARRAY DB 11,56,78,8,76,90,96,33,21,06
COUNT DW $ - ARRAY
RELUST DB ?
DSEG ENDS
SSEG SEGMENT PARA STACK 'STACK'
SDAT DB 50 DUP (?)
TOP EQU LENGTH SDAT
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG , DS:DSEG , SS:SSEG
START: MOV AX , DSEG
MOV DS , AX
MOV AX , SSEG
MOV SS , AX
MOV AX ,TOP
MOV SP , AX
MOV BX , OFFSET ARRAY
MOV CX , COUNT
DEC CX
MOV AL , [BX]
AGAIN: INC BX
CMP AL , [BX]
JAE NEXT
MOV AL , [BX]
NEXT: DEC CX
JNZ AGAIN
MOV RELUST, AL
MOV AH, 4CH
INT 21H
CSEG ENDS
END START
五、实验步骤
1.D:\MASM>MASM SY2.ASM
2.D:\MASM>LINK SY2.OBJ
3.D:\MASM>SY2.EXE
4.D:\MASM>DEBUG SY2.EXE
六、实验结论
1.指出参考程序中带下划线的指令中源操作数的寻址方式?
2.程序运行后AL中的值是多少?
3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求
学习并掌握汇编语言分支结构程序设计的方法。
二、实验内容
比较两个无符号数的大小,把大数存入MAX单元。
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
DSEG SEGMENT
NUMBER DB 60H,66H
MAX DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV AL,NUMBER
CMP AL,NUMBER+1
JNC BRANCH
MOV AL,NUMBER+1
BRANCH: MOV MAX,AL
MOV AH,4CH
INT 21H
CSEG ENDS
END START
五、实验步骤
1.D:\MASM>MASM SY3.ASM
2.D:\MASM>LINK SY3.OBJ
3.D:\MASM>SY3.EXE
4.D:\MASM>DEBUG SY3.EXE
六、实验结论
1.说明指令JNC的功能?
2.程序运行后变量MAX的值是多少?
3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求
学习并掌握汇编语言循环结构程序设计的方法。
二、实验内容
统计字符串STRING中空格的个数。源程序见实验参考程序。
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
DSEG SEGMENT
STRING DB 'Where there is a will,there is a way. $'
RESULT DW ?
DSEG ENDS
CSEG SEGMENT
ASSUME DS:DSEG,CS:CSEG
START: MOV AX,DSEG
MOV DS,AX
MOV BX,OFFSET STRING
MOV DX,0
NEXT: MOV AL,[BX]
CMP AL,'$'
JZ FIN
CMP AL,20H
JNZ CONT
INC DX
CONT: INC BX
JMP NEXT
FIN: MOV RESULT,DX
MOV AH,4CH
INT 21H
CSEG ENDS
END START
五、实验步骤
1.D:\MASM>MASM SY4.ASM
2.D:\MASM>LINK SY4.OBJ
3.D:\MASM>SY4.EXE
4.D:\MASM>DEBUG SY4.EXE
六、实验结论
1.指出参考程序中循环体执行的次数?
2.程序运行后变量RESULT的值是多少?
3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求
学习并掌握汇编语言子程序结构程序设计的方法。
二、实验内容
利用堆栈,采用递归子程序的方法,编程实现求N!。掌握汇编语言子程序结构程序设计的方法。
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
图5-1 求阶乘示意图
DSEG SEGMENT
N DW 5 ;此变量要送人AX中,应定义为字类型
RLT DW ? ;存放运算后的结果
DSEG ENDS
SSEG SEGMENT STACK ‘STACK’ ;声明组合类型后,系统自动为SS及SP
DW 100 DUP (?) ;分配值
SSEG ENDS
CSEG SEGMENT
ASSUME CS :CSEG,DS:DSEG,SS:SSEG
START: MOV AX, DSEG
MOV DS, AX
MOV AX, N
CALL REC ;调用求阶乘递归子程序
BRK: MOV RLT,AX ;运算后的结果送人RLT中
MOV AH, 4CH
INT 21H
REC PROC NEAR
PUSH DX ;递归调用时DX(5、4、3、2)依次压入堆栈
MOV DX, AX
CMP AX,1
JZ EXIT
DEC AX
CALL REC ;递归调用
AMD: MUL DX ;AX * DX→DXAX
EXIT: POP DX
RET
REC ENDP
CSEG ENDS
END START
五、实验步骤
1.D:\MASM>MASM SY5.ASM
2.D:\MASM>LINK SY5.OBJ
3.D:\MASM>SY5.EXE
4.D:\MASM>DEBUG SY5.EXE
六、实验结论
1.说明利用堆栈实现参数传递的好处?
2.程序运行后变量SUM的值是多少?
3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求
1.掌握DOS系统功能调用的方法;
2.正确使用功能调用中相关的入口参数和出口参数。
二、实验内容
接收键盘输入并在屏幕上显示。如果是“ESC”键,则退出程序(参考程序1);输出MESS中的字符串。按“ESC”键退出程序(参考程序2)。运行可执行文件并加以调试。分析运行结果。
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
1.实验参考程序1:
CSEG SEGMENT
ASSUME CS:CSEG
START: MOV AH , 1
START1: INT 21H
CMP AL , 1BH
JZ OVER
JMP START1
OVER: MOV AH , 4CH
INT 21H
CSEG ENDS
END START
2.实验参考程序2:
DSEG SEGMENT
MESS DB 'HuaBeiShuiYuan!$' ;显示信息
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS:DSEG
START: MOV AX, DSEG
MOV DS, AX
LEA DX, MESS
MOV AH, 9
INT 21H
MOV AH , 07H ;功能号为07H的功能是键盘输入无回显
INPUT: INT 21H
CMP AL , 1BH ;“ESC”键的ASCII是1BH
JZ EXIT ;按“ESC”键退出程序
JMP INPUT
EXIT: MOV AH , 4CH
INT 21H
CSEG ENDS
END START
五、实验步骤
1.D:\MASM>MASM SY6.ASM
2.D:\MASM>LINK SY6.OBJ
3.D:\MASM>SY6.EXE
4.D:\MASM>DEBUG SY6.EXE
六、实验结论
1.说明参考程序所完成的功能?
2.什么是DOS系统功能调用?
3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求
1.掌握BIOS中断调用的方法;
2.正确使用功能调用中相关的入口参数和出口参数。
二、实验内容
采用BIOS功能调用在屏幕上用多种属性显示字符串。运行可执行文件并加以调试。分析运行结果。
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
ROW=5 ;常量定义,显示信息的行号
COLUM=10 ;显示信息的列号
ESCKEY=1BH ;ESC键的ASCII码值
DSEG SEGMENT
MESS DB 'HuaBeiShuiYuan!' ;显示信息
MESS_LEN = $ - OFFSET MESS ;显示信息的长度
COLORB DB 07H,01H,0FH,70H,74H ;颜色属性
COLORE LABEL BYTE
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS:DSEG, ES:DSEG
START: MOV DI, OFFSET COLORB-1 ;颜色指针初值
NEXTC: MOV AX, DSEG
MOV DS, AX ;设置数据段段值
MOV ES, AX ; ES指向数据段
INC DI ;调整颜色指针
CMP DI, OFFSET COLORE ;是否超过指定的颜色
JNZ NEXTE ;没有超过则跳转
MOV DI, OFFSET COLORB ;超过则重新指定为第一种颜色
NEXTE: MOV BL, [DI] ;取颜色
MOV SI, OFFSET MESS ;取显示信息指针
MOV CX, MESS_LEN ;取显示信息长度
MOV DH, ROW ;设置显示开始行号
MOV DL, COLUM ;设置显示开始列号
CALL ECHO ;调用显示子程序
MOV AH, 0 ; 0号功能为从键盘读字符
INT 16H ;执行INT 16H的0号功能
CMP AL, ESCKEY ;是否为“ESC”键
JNZ NEXTC ;不是,继续循环
MOV AH, 4CH ;结束程序,返回DOS
INT 21H
;子程序入口参数包括:DS:SI = 字符串首地址
; CX = 字符串长度,BL = 属性,DH = 显示开始行号,DL=显示开始列号
ECHO PROC NEAR
JCXZ ECHO2 ;如果字符串长度为0,则结束
MOV BH, 0
MOV AH, 2 ;设置光标位置
INT 10H
MOV AL, 20H ;用指定属性写一空格
MOV AH, 9
INT 10H
MOV AH, 0EH
ECHO1: MOV AL, [SI]
INC SI
INT 10H ;逐个显示字符
CALL DELAY ;调用延时子程序
LOOP ECHO1
ECHO2: RET
ECHO ENDP
DELAY PROC NEAR ;延时子程序
PUSH BX
PUSH CX
MOV BX, 500
WAIT0: MOV CX, 0FFFFH
WAIT1: LOOP WAIT1
DEC BX
JNZ WAIT0
POP CX
POP BX
RET
DELAY ENDP
CSEG ENDS
END START
五、实验步骤
1.D:\MASM>MASM SY7.ASM
2.D:\MASM>LINK SY7.OBJ
3.D:\MASM>SY7.EXE
4.D:\MASM>DEBUG SY7.EXE
六、实验结论
1.说明参考程序所完成的功能?
2.什么是BIOS中断调用?
3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求
1.掌握中断的基本概念;
2.会将定时器中断子程序的入口地址写入中断向量表中;
3.理解简单的多任务操作。
二、实验内容
将自编的显示系统时间的中断服务子程序驻留在内存中,通过定时器中断(向量号为1CH)定时调用中断服务子程序来显示系统时间,同时可以在命令提示符下运行并调试其他程序,实现多任务操作。运行可执行文件并加以调试。分析运行结果。
三、实验设备
微型计算机(80x86系列)。
四、实验参考程序
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
START: JMP GOSET
OLDCUR DW ?
OLD1C DW 2 DUP(?)
NEWINT1C: PUSHF
CALL DWORD PTR CS:OLD1C ;OLD1C中为1CH的中断向量
PUSH AX
PUSH BX
PUSH CX
PUSH DX
XOR BH, BH ;BH清零
MOV AH, 3 ;INT 10H的3号功能为读光标位置,
INT 10H ;BH=页号,返回参数DH/DL=行/列
MOV CS:OLDCUR, DX ;光标位置保存在OLDCUR单元中
MOV AH, 2 ;INT 10H的2号功能为置光标位置, BH=页号
XOR BH, BH ;清零,表明为0页
MOV DX, 0146H ; DH/DL=行/列,设置显示的时间在1行/70列
INT 10H
MOV AH, 2 ;INT 1AH的2号功能为读电池供电时钟时间
INT 1AH ;出口参数:CH:CL:DH=时:分:秒
PUSH DX
PUSH CX
POP BX ;CX压入堆栈的值弹出给BX
PUSH BX
CALL SHOWBYTE ;此处调用为显示小时
CALL SHOWCOLON ;显示':'
POP BX
XCHG BH, BL ;BL中为分钟值
CALL SHOWBYTE ;此处调用为显示分钟
CALL SHOWCOLON ;显示':'
POP BX ;DX压入堆栈的值弹出给BX
CALL SHOWBYTE ;BL中为秒值
MOV DX, CS:OLDCUR ;恢复保存在OLDCUR单元中的光标位置
MOV AH, 2
XOR BH, BH
INT 10H
POP DX
POP CX
POP BX
POP AX
IRET ;中断返回指令
SHOWBYTE PROC NEAR ;将BX中的值转换为ASCII码后显示在屏幕上
PUSH BX
MOV CL, 4
MOV AL, BH ;BH中的值可以是当前时:分:秒
SHR AL, CL
ADD AL, 30H ;计算ASCII码
CALL SHOW ;在光标位置显示字符和属性
CALL CURMOVE ;子程序的功能为读当前光标并后移
POP BX
MOV AL, BH
AND AL, 0FH
ADD AL, 30H
CALL SHOW
CALL CURMOVE
RET
SHOWBYTE ENDP
SHOWCOLON PROC NEAR ;显示':'
MOV AL,':'
CALL SHOW
CALL CURMOVE
RET
SHOWCOLON ENDP
CURMOVE PROC NEAR ;读当前光标并后移
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH, 3 ;INT 10H的3号功能为读光标位置
MOV BH, 0
INT 10H
INC DL ;列增1,光标后移
MOV AH, 2 ;INT 10H的2号功能为置光标位置
INT 10H
POP DX
POP CX
POP BX
POP AX
RET
CURMOVE ENDP
SHOW PROC NEAR ;子程序的功能为在光标位置显示字符和属性
PUSH AX
PUSH BX
PUSH CX
MOV AH, 09H ;INT 10H的9号功能为在光标位置显示字符和属性
MOV BX, 1FH ; 1FH为属性值, 显示的字符为白底蓝字
MOV CX, 1 ; BH=显示页,AL/BL=字符/属性,CX=字符重复次数
INT 10H
POP CX
POP BX
POP AX
RET
SHOW ENDP
GOSET: PUSH CS
POP DS ;DS指向代码段
MOV AX, 351CH ;取中断向量,AH=35H的功能为获取中断向量,
INT 21H ;入口:AL=中断类型号,出口:ES:BX=中断向量
MOV OLD1C, BX ;中断向量(CS:IP)保存在OLD1C单元中
MOV BX, ES
MOV OLD1C+2, BX ;中断向量的高16位
MOV DX, OFFSET NEWINT1C ;NEWINT1C为中断程序的入口地址
MOV AX, 251CH ; AH=25H的功能为设置中断向量
INT 21H ; 出口参数DS:DX=中断向量
MOV DX, OFFSET GOSET
SUB DX, OFFSET START ;计算代码段相对偏移量
MOV AX, 3100H ;AH=31H的功能为程序终止并驻留
INT 21H ;AL=返回码,DX=驻留区大小
CODE ENDS
END START
五、实验步骤
1.D:\MASM>MASM SY8.ASM
2.D:\MASM>LINK SY8.OBJ
3.D:\MASM>SY8.EXE
4.D:\MASM>DEBUG SY8.EXE
六、实验结论
1.说明参考程序所完成的功能?
2.什么是中断向量表?
3.分析实验结果及所遇到的问题,并说明解决的方法。
目录实验一数据传送2实验二算术运算8实验三代码转换15实验四程序的基本结构练习21实验五存储器RAM6264扩展错误未定义书签实验…
实验一认识Tddebug集成操作软件一实验内容一实验题目数据传送实验1编程将数据段中的一个字符串传送到附加段中并输出附加段中的目标…
实验一熟悉汇编语言程序开发过程一实验目的1熟悉与实验有关的系统软件如编辑程序汇编程序连接程序和调试器等的使用2在程序调试过程中学习…
微机原理与接口技术实验报告姓名专业班级学号指导教师计算机科学与技术安徽工业大学计算机学院20xx年5月21日微机原理与接口技术实验…
微机原理与接口技术实验报告学院计算机与通信工程学院专业计算机科学与技术班级学号姓名实验一8259中断控制器应用实验一实验目的1掌握…
SDU微机原理与接口技术实验报告梁聚仁20xx00120xx0微机原理与接口技术实验报告实验一上机练习实验目的1掌握用编辑软件编辑…
实验一系统认识实验1实验内容编写实验程序将00H0FH共16个数写入内存3000H开始的连续16个存储单元中2实验源程序SSTAC…
实验报告20xx20xx学年第一学期课程名称实验名称计算机接口技术基于中断的字符串动态显示20xx实验时间指导单位指导教师年11月…
微机原理与接口技术课程设计报告交通灯控制系统班级学号姓名成绩20xx年7月1日1目录1课程设计的目的和要求32系统的主要功能作用及…
微机原理与接口技术实验报告安徽工业大学计算机学院姓名专业班级学号指导教师实验一8255A应用数码管动态显示一实验目的1掌握8255…
一实验目的及要求目的通过本次综合实验使学生综合运用计算机接口与通信技术汇编语言以及电子技术等课程的内容为以后从事计算机检测与控制工…