当前位置:文档之家› 微机接口技术实验指导书

微机接口技术实验指导书

《微机接口技术》实验指导书主编李建波主审黄忠宇、苏显广东机电职业技术学院计算机与信息工程系前言本实验指导书适用于机电一体化专业,实验时间10学时,5次上机时间。

主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作。

学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序。

目录实验项目一熟悉微机实验环境 (4)实验项目二掌握中断方式显示数字或字符 (6)实验项目三掌握汇编语言的寻址方式 (8)实验项目四掌握循环指令的用法 (10)实验项目五掌握子程序的用法 (12)实验报告一熟悉微机实验环境1、实验目的1、熟悉微机实验环境安装2、熟悉微机实验环境配置3、通过练习加法,熟悉程序格式4、单步运行程序,通过观察窗口观察指令对寄存器中数据的影响2、实验步骤1)软件安装 (拷贝三个文件夹)复制:桌面| 网上邻居\ Techer\ c盘\ wave、comp86和in8088三个文件夹拷贝:将三个文件夹到自己计算机上C:盘根目录下在资源管理器下可以看到:C:\wave,C:\comp86,C:\in8088三个文件夹2)通过资源管理器,进入汇编环境C:\wave\Bin\wave.exe ,双击wave.exe3)打开文件我的电脑 \ c: \ wave \ bin \ wave.exe环境配置(如下图)选中菜单栏中“仿真器”——“仿真器设置”选项(如下图)a、选中“语言”一栏,编译器路径中填写: C:\COMP86\(如下图)b、选中“仿真器”一栏,选择仿真器—————G6W(如下图)选择仿真头—————8088/8086实验(如下图)选择CPU —————8088/8086(如下图)使用软件模拟器:打√表示软件实验,硬件实验则无√4)新建文件a、选中菜单栏\文件\新建文件,建立空白文件b、编辑文件,输入以下代码data segment ;ds 数据段data endsstack segment ;ss 堆栈段stack endscode segment ;cs 代码段assume cs:code, ds:data,ss:stackmain:mov ax, datamov ds, axmov ah,4ch ;程序结束,返回DOSint 21hcode endsend main5)保存源程序a、注意:保存源程序的文件名不能太长(包括路径)不得超过8个,不用汉字;b、注意:保存源程序的文件名的后缀为 .asm6)编译和运行选择菜单栏\项目\全部编译进行编译工作,出现全部正确为止,否则检查。

7)选择菜单栏\执行\单步或F8快捷键或图标,观察窗口观察数据变化a、选择菜单栏\窗口\CPU窗口b、观察单步执行时CPU内部有名称的寄存器如AX、BX、CX、DX的变化3、完成思考题,调试成功后,请老师进行实验验收、打分4、本次实验出现问题、解决方法,以及对实验的意见实验报告二显示数字或字符1、实验目的1)复习微机实验环境安装和环境配置2)练习寻址方式、重点内存寻址方式3)单步运行程序,通过观察窗口观察指令对寄存器中数据的影响2、实验步骤1)完成微机实验环境配置2)新建文件a、选中菜单栏\文件\新建文件,建立空白文件b、编辑文件,输入以下代码data segment ;ds 数据段x db 3data endsstack segment ;ss 堆栈段stack endscode segment ;cs 代码段assume cs:code, ds:data,ss:stackmain:mov ax, datamov ds, axmov dl,ladd dl,30h ;0~9的数字与相应的ASCII码相差30H,P17页mov ah,2int 21hmov ah,4ch ;程序结束,返回DOSint 21hcode endsend main3)保存源程序a、注意:保存源程序的文件名不能太长(包括路径);b、注意:保存源程序的文件名的后缀为 .asm4)编译和运行选择菜单栏\项目\全部编译进行编译工作选择菜单栏\执行\单步或F8快捷键或图标5)观察窗口观察数据变化a、选择菜单栏\窗口\CPU窗口b、观察单步执行时CPU内部有名称的寄存器如AX、BX、CX、DX的变化3、完成思考题,调试成功后,请老师进行实验验收、打分a、程序功能_________b、如何显示一个字符_________c、为什么在Wave下进行编辑、编译、连接、调试d、为什么要在DOS下执行程序4、本次实验出现问题、解决方法,以及对实验的意见实验报告三寻址方式1、实验目的1、复习微机实验环境安装和环境配置2、练习寻址方式、重点内存寻址方式3、单步运行程序,通过观察窗口观察指令对寄存器中数据的影响2、实验方向程序是指令的集合。

指令就是计算机可以识别的命令程序=数据结构+算法。

数据不能凭空产生和凭空存在,必须有其存在的硬件环境。

计算机硬件系统包括CPU、内存、系统总线、接口。

所以数据(操作数)只能存放在CPU、内存、接口中,产生几种寻址方式。

寻址方式是指寻找指令操作数所在地址的方式(为确定数据的来源和去处)。

四种寻址方式a、立即数寻址:操作数代码中例如: mov bx,1234Hb、寄存器寻址:操作数在CPU中的某个寄存器例如: mov ax, bxc、外设寻址:操作数在外设中(即接口电路中)例如: IN ax,23Hd、内存寻址:操作数在内存中。

例如: mov ax,[bx]根据偏移地址求法内存寻址划分为5种:●直接寻址:偏移地址在指令[ ]中可以看到。

●寄存器间接寻址:偏移地址在CPU寄存器中。

●寄存器相对寻址:偏移地址由CPU寄存器中数值和另外数值的叠加得到。

●基址变址寻址:偏移地址由CPU中基址寄存器(BX、BP)中的数值和变址寄存器(SI、DI)中数值得到。

●相对基址变址寻址:偏移地址由CPU中基址寄存器BX、BP)中的数值和变址寄存器(SI、DI)中数值得到。

举例说明mov ax,[1234h] ;内存寻址方式中的直接寻址 (偏移地址在指令[ ]中可以看到) mov ax,[bx] ;内存寻址方式中的寄存器间接寻址(偏移地址在CPU寄存器中) mov ax,[bx+12H] ;内存寻址方式中的寄存器相对寻址mov ax,[bx+si] ;内存寻址方式中的基址变址寻址mov ax,[bx+si+12H];内存寻址方式中的相对基址变址寻址3、实验步骤1)完成微机实验环境配置2)新建文件a、选中菜单栏\文件\新建文件,建立空白文件b、编辑文件,输入以下代码data segment ;数据段开始block1 dw 1234h,5678h,9abch,0def0hdata ends ;数据段结束end segmentcode segment ;代码段开始assume cs:code,ds:data ; 建立代码段寄存器和代码段段名的关系main: ; 主程序的开始mov ax,datamov ds,ax ;初始化数据段段寄存器mov bx,offset block1mov si,2mov ax,bxmov ax,ds:[bx]mov ax,ds:[bx+2]mov ax,ds:[bx+si]mov ax,ds:[bx+si+2]mov ah,4ch ;程序结束,返回DOSint 21hcode ends ;代码段结束 end of segmentend main ;主程序结束3)保存源程序a、注意:保存源程序的文件名不能太长(包括路径);b、注意:保存源程序的文件名的后缀为 .asm4)编译和运行选择菜单栏\项目\全部编译进行编译工作选择菜单栏\执行\单步或F8快捷键或图标5)观察窗口观察数据变化a、选择菜单栏\窗口\CPU窗口b、观察单步执行时CPU内部有名称的寄存器如AX、BX、CX、DX的变化4、完成思考题,调试成功后,请老师进行实验验收、打分a、程序功能_________b、练习其他寻址方式c、写出每个寻址方式5、本次实验出现问题、解决方法,以及对实验的意见实验报告四循环指令1、实验目的1)完成微机实验环境配置2)练习循环指令loop和cmp、jnz使用3)单步运行程序,通过观察窗口观察指令对寄存器中数据的影响2、实验步骤1)完成微机实验环境配置a、新建文件:输入以下代码DATA SEGMENTBUF db 23H,16h,08h,20h,64H,8AH,91H,35H,2BH,0ffHCN EQU $-BUFz dw 1234hDATA ENDSSTACK SEGMENTSTA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATA,SS:STACKmain:MOV AX,DATAMOV DS,AXmov ax,0mov bx,offset bufmov cx,cnLP: add Al,[bx]adc ah,0add bx,1sub cx,1JNZ LPmov z,axmov ah,4ch ;主程序结束int 21hCODE ENDSEND main2)保存源程序a、注意:保存源程序的文件名不能太长(包括路径);b、注意:保存源程序的文件名的后缀为 .asm3)编译和运行选择菜单栏\项目\全部编译进行编译工作选择菜单栏\执行\单步或F8快捷键或图标4)观察窗口观察数据变化a、选择菜单栏\窗口\CPU窗口b、观察单步执行时CPU内部、存储Memory 窗口数据0400h单元3、完成思考题,调试成功后,请老师进行实验验收、打分a、此程序功能_________,写出指令作用。

b、如果求最小数,如何修改的指令。

c、如果求最大数,如何修改的指令。

4、本次实验出现问题、解决方法,以及对实验的意见****重点***指令mov ds:[si], bl ;将bl中的数据传递到内存物理地址中;物理地址=段地址*16+偏移地址; =ds*16+si; =0040H*16+si; =0400H+0000h=0400h实验报告四子程序调用1、实验目的1、完成微机实验环境配置2、练习子程序调用call和ret使用3、单步运行程序,通过观察窗口观察指令对寄存器中数据的影响2、实验步骤1)完成微机实验环境配置a、新建文件:输入以下代码data segment ;ds 数据段x db 09hdata endsstack segment ;ss 堆栈段stack endscode segment ;cs 代码段assume cs:code, ds:data,ss:stackmain:mov ax, datamov ds, axmov al,xcall dispmov ah,4ch ;程序结束,返回DOSint 21hdisp proc ;输出1个十六进制数的子程序cmp al,9ja loop2loop1: mov dl,aladd dl,30h ;0~9的数字与相应的ASCII码相差30H,P17页mov ah,2int 21hjmp loop3loop2: mov dl,aladd dl,37h ;A~F的数字与相应的ASCII码相差37H,P17页mov ah,2int 21hloop3:retdisp endpcode endsend main2)保存源程序c、注意:保存源程序的文件名不能太长(包括路径);d、注意:保存源程序的文件名的后缀为 .asm3)编译和运行选择菜单栏\项目\全部编译进行编译工作选择菜单栏\执行\单步或F8快捷键或图标4)观察窗口观察数据变化c、选择菜单栏\窗口\CPU窗口d、观察单步执行时CPU内部、存储Memory 窗口数据0400h单元3、完成思考题,调试成功后,请老师进行实验验收、打分a、输出1个十六进制数的子程序中为什么用“cmp al,9”指令,不用会怎样。

相关主题