收藏 分销(赏)

汇编语言与微机原理实验指导书范本.doc

上传人:精**** 文档编号:9868851 上传时间:2025-04-11 格式:DOC 页数:40 大小:277KB 下载积分:12 金币
下载 相关 举报
汇编语言与微机原理实验指导书范本.doc_第1页
第1页 / 共40页
汇编语言与微机原理实验指导书范本.doc_第2页
第2页 / 共40页


点击查看更多>>
资源描述
汇编语言与微机原理实验指导书 40 2020年4月19日 文档仅供参考 《汇编语言与微机原理》实验指导书 编写者: 董建怀 编写时间: -9-10 实验一. 熟悉DOS环境和DEBUG调试软件的使用 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1、.熟悉DOS环境和DEBUG调试软件的使用方法。 2、掌握DEBUG常见命令A、U、D、E、R、T、G的使用,用DEBUG调试简单程序段。 六、实验内容: (一)、熟悉DOS环境 1、 MS-DOS的启动:开始—程序—附件—MS-DOS方式(命令提示符)。 2、 MS-DOS全屏方式和窗口方式的切换:“ALT”+“ENTER”。 3、 MS-DOS工具栏的打开:“ALT”+空格键。 4、 MS-DOS方式下的选定、复制和粘贴:利用菜单栏下”编辑”菜单项中的“标记”、“复制”和“粘贴”的功能来实现。 5、 MS-DOS方式的退出:EXIT。 练习:进入MS-DOS方式,并将屏幕上显示的全部内容复制到一WORD文档中。 (二)、熟悉一些常见的DOS命令 1、更改盘符,如:C:\WINDOWS>d:并按“ENTER”,显示:D:\>(盘符更改为D:)。 2、建立子目录(文件夹)MD,如C:\>MD FOX (在当前驱动器C盘下创立子目录FOX)。 3、显示当前目录CD,如:C:\>CD WINDOWS,显示:C:\WINDOWS>(即从当前目录C:\进入到C:\WINDOWS目录)。 4、显示磁盘目录的内容DIR,如:C:\WINDOWS>,显示的内容即为当前目录C:\WINDOWS中的所有内容。 5、返回上级目录,如:C:\WINDOWS>cd ..,显示C:\>(即从当前目录C:\WINDOWS返回到它的上级目录C:\)。 练习:在MS-DOS方式下,进入C:\WINDOWS\SYSTEM目录,并显示该目录下的所有内容,然后返回C盘的根目录(C:\)。 (三)、熟悉调试程序DEBUG.EXE的应用,练习DEBUG的常见命令 实践1:利用DEBUG.EXE的A、D、U命令,观察指令MOV AH,[BX+DI+50H],对应的机器码是什么?,该指令是几个字节的指令?并对机器码进行反汇编,观察对应的指令是什么?ADD [2345H][BX][DI],DX的机器码是什么? 该指令是几个字节的指令? 并对机器码进行反汇编,观察对应的指令是什么? 实践2:在DEBUG.EXE方式下(利用A、G命令), 分析两个数相加(C8H+EFH)的结果,运用的指令为:mov AL,0efh add AL,0c8h 问题: (1).运算后两个数的和是多少?(提示:运算的结果在AL寄存器中) (2).6位状态标志位(AF,CF,OF,PF,SF,ZF)分别是多少? (3).当相加的两个数均为无符号数时运算的结果是否正确?为什么? (4).当相加的两个数均为带符号数时运算的结果是否正确?为什么? (5).相加的两个数分别为5B0AH, 4CA3H时,经过上机再回答(1)---(4)的问题。 七、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验二. 数据传送类指令练习 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1、熟悉掌握DEBUG常见命令A、U、D、E、R、T、G的使用。 2、对由数据传送类指令组成的简单程序进行调式验证。 六、实验内容: (一)、运用数据传送指令(几条),实现如下操作: 1、把一个数64H,送到以(DS)=3000H,偏移地址(EA)为1064H的存储单元中,在DEBUG方式下进行汇编并运行,用D命令观察该存储单元(3000H:1064H)中的内容是否为64H? 2、经过指令使(31064H)=64H(同第1小题),用指令使(DS)=3001H,且将地址为31064H的字节内容(64H),送到AL寄存器中去。在DEBUG方式下,观察AL寄存器中的内容是否为64H? (二).分析逐条分析下列指令的运行结果和指出执行下列的程序片段后,(SP)=?,(AX)=?,(BX)=?;并上机验证。 MOV SP, H MOV AX,30000H MOV BX,50000H PUSH AX PUSH BX POP AX (三).分析逐条分析下列指令的运行结果和指出执行下列的程序片段后,(DS)=?,(AX)=?,(BX)=? ;并上机验证。 MOV AX, H MOV DS,AX MOV WORD PTR[0050H],5678H MOV WORD PTR[0052H],1234H MOV SI,0030H LDS AX,[SI][0020H] LEA BX,[SI][0020H] 0AFC:0106 MOV BX,5000 0AFC:0109 PUSH AX 0AFC:010A PUSH BX 0AFC:010B POP AX 0AFC:010C -G=0AFC:0100 010C AX=5000 BX=5000 CX=0000 DX=0000 SP=1FFE BP=0000 SI=0000 DI=0000 DS=0AFC ES=0AFC SS=0AFC CS=0AFC IP=010C NV UP EI PL NZ NA PO NC 0AFC:010C 0030 ADD [BX+SI],DH DS:5000=00 -A 0AFC:010C MOV AX, 0AFC:010F MOV DS,AX 0AFC:0111 MOV WORD PTR[0050],5678 0AFC:0117 MOV WORD PTR[0052],1234 0AFC:011D MOV SI,0030 0AFC:0120 LDS AX,[SI][0020] 0AFC:0123 LEA BX,[SI][0020] 0AFC:0126 -G=0AFC:010C 0126 AX=5678 BX=0050 CX=0000 DX=0000 SP=1FFE BP=0000 SI=0030 DI=0000 DS=1234 ES=0AFC SS=0AFC CS=0AFC IP=0126 NV UP EI PL NZ NA PO NC 0AFC:0126 005050 ADD [BX+SI+50],DL DS:00D0=00 - 七、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验三. 算术运算类指令练习 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1、熟悉掌握DEBUG常见命令A、U、D、E、R、T、G的使用。 2、对由算术运算类指令组成的简单程序进行调式验证。 六、实验内容: (一).编写实现987654H+0ABCDEFH的指令序列,在DEBUG中进行调试,观察结果。 (二).设(DS)=3000H,(30100H)=30FFH。则指出分别运行指令INC BYTE PTR[0100H]和INC WORD PTR[0100H]后,地址为30100H和30101内存单元的内容。编写指令序列上机验证。 (三)、乘、除指令练习 (1)利用适当的指令,上机求出两个不带符号数 3CH×80H的结果 ,且运行后(CF)= ,(OF)= 。并说明为什么CF、OF会取该值? (2)利用适当的指令,上机求出两个不带符号数 0CH×10H的结果 ,且运行后(CF)= ,(OF)= 。并说明为什么CF、OF会取该值? (3)利用适当的指令,上机求出两个不带符号数 3C80H×3030H的结果 ,且运行后(CF)= ,(OF)= 。并说明为什么CF、OF会取该值? (4)利用适当的指令,上机求出两个带符号数 0C80H×8000H的结果 ,且运行后(CF)= ,(OF)= 。并说明为什么CF、OF会取该值? (5)利用适当的指令,上机求出两个带符号数 005DH×FF87H的结果 ,且运行后(CF)= ,(OF)= 。并说明为什么CF、OF会取该值? (6)利用适当的指令,上机求出两个带符号数 A30BH÷E0FFH的结果是 。 (四)、十进制数运算指令练习(作业中要求写出指令) (1)经过适当的指令,上机求出两个十进数58+69的结果,结果是放在哪些寄存器或状态标志位中,它们的值分别是多少? (2)经过适当的指令,上机求出两个十进数8+9的结果,结果是放在哪些寄存器中或状态标志位中,它们的值分别是多少? (3)经过适当的指令,上机求出两个十进数78-29的结果,结果是放在哪些寄存器或状态标志位中,它们的值分别是多少? 七、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验四 逻辑、移位及串操作类指令练习 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1、熟悉掌握DEBUG常见命令A、U、D、E、R、T、G的使用。 2、对由逻辑、移位运算及串操作算术运算类指令的简单程序进行调式验证。 六、实验内容: (一)、写一指令序列完成将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变。若运行前(AX)=FFFFH,则运行后(AX)=? (二)、设在数据段中对应的地址为3000:0000的字变量X中的内容为无符号数0078H,在数据段中对应的地址为3000:0002的字变量Y中的内容为无符号数108CH,编写指令求出Z,Z=2X-Y, Z在数据段中,对应的地址为3000:0004。 (三)、设(BX)=6D16H,(AX)=1100H,分析执行下面的三条批令后AX、BX中的内容分别是多少?并上机验证之。 MOV CL,06H ROL AX,CL SHR BX,CL (四)、指出下列程序段的功能,并上机验证之。 CLD LEA DI,[0404H] MOV CX,0080H MOV AX,5050H 、 REP STOSW (五)、设(IP)=3D8FH,(CS)=4050H,(SP)=0F17CH,当执行CALL :0094H后,试指出(IP)、(CS)、(SP)、((SP))、((SP)+1)、((SP)+2)和((SP)+3)的内容。 七、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验五 寻址方式与基本指令实验 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1、熟悉80X86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。 2、掌握汇编语言程序设计上机、调试过程和汇编语言源程序结构,为后续汇编语言程序设计打好基础。 3、熟悉MASM、LINK、CODEVIEW工具软件、MASM FOR WINDOWS集成实验环境的使用方法。 六、实验内容: (一)、读懂下列源程序,使用EDIT或”记事本”程序生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT或”记事本”程序打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。 1. 程序装入后,代码段寄存器CS的内容为 H,代码段第一条可执行指令:MOV AX,DATA对应的机器代码为 H,它是一个 个字节的指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是 ,其值为 。 2. 执行完MOV DS,DATA指令后,DS的内容为 H,源程序在数据段中定义的数据82H,68H,88H被装入的存储单元的物理地址分别是 H, H, H. 3. 程序中第一条ADD AL,[BX]指令对应的机器代码为 H,它是一个 个字节的指令,注意观察执行该指令时IP值的变化情况;该指令源操作数的寻址方式是 ,该操作数所在存储单元的逻辑地址(DS):(BX)为 ,其物理地址为 H;执行完该指令后(AL)= H,CF= ,OF= , ZF= , SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确? 若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数? 4.执行完第二条ADD AL,[BX]指令后(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ; 若两操作数为无符号数,计算结果是否正确? 若两操作数为带符号数,计算结果是否正确? 5.指令MOV SUM,AL中,目的操作数的寻址方式为 。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为 H。 data segment num db 82h,68h,88h sum db ? data ends code segment assume cs:code,ds:data start: mov ax,data -u 1734:0000 B83317 MOV AX,1733 1734:0003 8ED8 MOV DS,AX 1734:0005 BB0000 MOV BX,0000 1734:0008 8A07 MOV AL,[BX] 1734:000A 43 INC BX 1734:000B 0207 ADD AL,[BX] 1734:000D 43 INC BX 1734:000E 0207 ADD AL,[BX] 1734:0010 A20300 MOV [0003],AL 1734:0013 B44C MOV AH,4C 1734:0015 CD21 INT 21 1734:0017 46 INC SI 1734:0018 F8 CLC 1734:0019 8B46FE MOV AX,[BP-02] 1734:001C 8946F6 MOV [BP-0A],AX 1734:001F EB06 JMP 0027 mov ds,ax mov bx,offset num mov al,[bx] inc bx add al,[bx] inc bx add al,[bx] mov sum,al mov ah,4ch int 21h code ends end start (二)、读懂下列源程序,编辑、汇编、连接生成EX12.ASM、EX12.OBJ、EX12.LST、EX12.EXE文件,使有DEBUG单步执行EX12.EXE文件,并回答以下问题。 1.代码段的前三条指令:mov ax,stack,mov ss,ax,mov sp,length stl的功能为堆栈初始化,试问执行完这三条指令后,(SS)= ,(SP)= ;执行push ax后,(SP)= H,此时(SS):(SP+1)和(SS):(SP)两单元的值为 H,执行完push bx后,(SP)= H,此时(SS):(SP+1)和(SS):(SP)两单元的值为 H,执行完pop ax后,(SP)= H,执行完pop bx后,(SP)= H,此时(AX)= H,(BX)= H。 经过对堆栈操作指令执行情况的观察,进一步掌握进、出栈操作过程。 2.执行add ax,bx指令后,(AX)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= (注意考虑PF值与计算结果高8位有无关系); 若两操作数为无符号数,计算结果是否正确? 若两操作数为带符号数,计算结果是否正确? name bbb stack segment stack stl dw 100h dup(?) stack ends code segment assume cs:code,ss:stack start: mov ax,stack mov ss,ax mov sp,length stl ;表示式length stl的功能为计算stl中 ;定义的变量的个数,这里表示式的值为100H。 mov ax,1010b mov bx,0011b push ax push bx add ax,bx pop ax pop bx and ax,bx mov ah,4ch int 21h code ends end start (三).指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错信息,改正后再上机验证。 1. MOV BP,BL 2. MOV [BX],[BP] 3. MOV [BX],20H 4. INC [SI] 5. ADD AX,[SI+DI] 6. SHL AX,3 7. PUSH H 8. POP AL 9. MOV CS,AX 10.MOV DS,1000H 七、实验报告要求 1、补全上述源程序中未写出的程度代码。 2、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验六 顺序结构程序设计实验 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1、掌握顺序程序的设计方法。 2、熟悉MASM FOR WINDOWS集成实验环境等软件的使用。 六、实验内容: 1. 编写程序实现:从键盘输入两个1位的十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 提示:数据段的格式可定义为: data SEGMENT infor1 DB 'Please input the first data(<10):$' infor2 DB 0ah,0dh,'please input the second data(<10):$' infor3 DB 0ah,0dh,'the result is:$' data ENDS 2.编写程序实现:从键盘输入0~9中任意一个自然数,将其平方值在屏幕上显示出来(要求使用查表法)。 输出INFOR1信息(09H) 接收第一个输入数(01H) 接收第一个输入数-30H 输出INFOR2信息(09H) 接收第二个输入数(01H) 接收第二个输入数-30H 输出INFOR3信息(09H) 俩加数相加并修正 和的十位数+30H后输出(02H) 和的个位数+30H后输出(02H) 退出 七、实验报告要求 1、画出流程图,编写源程序,调试成功。 2、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验七 选择结构程序设计实验 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1. 掌握分支程序的设计方法。 2. 了解小写和大写字母的ASCII码表示及其转换方法,了解数字及其它字符的ASCII码表示方法。 3. 进一步掌握调试工具的使用方法。 六、实验内容 1、从键盘输入一字符,判断该字符是小写字母、大写字母、数字还是其它字符。若输入为小写字母,则显示“You Input a Lowercase Letter!”; 若输入为大写字母,则显示“You Input a Uppercase Letter!”; 若输入为数字,则显示“You Input a Digit!”; 若输入为其它字符,则显示“You Input Other Letter!”。 2、在屏幕上显示“Are you really want to exit?”,然后从键盘输入一字符,若输入“Y”或“y”,则显示“Thank you for your using!”; 若输入“N”或“n”,则显示“Let’s continue!”; 若输入其它字符,则显示“You press an error key!”后程序结束。 七、实验报告要求 1、画出流程图,编写源程序,调试成功。 2、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验八 循环结构程序设计实验 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:机房 五、实验目的: 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 六、实验内容 1、试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07H)。 提示:用2号功能号输出07H就会响铃一次。 六、实验报告要求 1、画出流程图,编写源程序,调试成功。 2、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。 实验九 8253A定时/计数器实验 一、实验要求: 必做 二、实验类型: 验证 三、实验学时:2 四、实验地点:硬件实验室 五、实验目的: 1、学习8253A可编程定时/计数器与8086CPU的接口方法。 2、了解8253A的工作方式。 3、掌握8253A在各种方式下的编程方法。 六、实验内容: 1.在DVCC8086系统中,己知:CLK接1MHZ的时钟信号, 8253片选信号的地址为:0048H~004BH,每个计数器的GATE端己固定接高电平。实现在8253计数器2输出一个频率为1KHZ的方波信号(可用示波器观察)。 程序流程图: 开始 计数器2 初始化 暂停(停止) 2.己知:系统提供有1MHZ的时钟信号, 8253片选信号的地址为:0048H~004BH, 系统只有计数器0和计数器2可外接,且每个计数器的GATE端己固定接高电平。要求实现:输出一个频率为1HZ的方波信号(可用示波器或LED灯观察)。 CLK0 GATE0 OUT0 CLK2 GATE2 OUT2 8253 1MHZ +5V 1HZ 程序流程图: 计数器0 初始化 开始 计数器2 初始化 暂停(停止) 七、实验步骤: 1、按上图连好实验线路 2、运行实验程序 3、用示波器或LED灯观察输出端的波形。 八、实验报告要求 1、实验目的 2、工作原理 3、程序流程图 4、实验结果及心得体会。 实验十 8253A应用实验 一、实验要求: 必做 二、实验类型: 设计 三、实验学时:2 四、实验地点:硬件实验室 五、实验目的: 1、进一步掌握8253A可编程定时/计数器与8086CPU的接口方法。 2、掌握8253A的级联的方法。 3、掌握输出声音的编程方法。 六、实验内容: 1.要求在计数器0输出“小星星”乐曲(循环输出)。 七、实验步骤: 1、按上图连好实验线路 2、运行实验程序 3、实验1中将LED灯接至OUT2端观察灯的亮暗情况;实验2中将OUT0接声单驱动输入端,喇叭应有对应频率的声音输出。 八、实验报告要求 1、实验目的 2、工作原理 3、程序流程图 4、实验结果及心得体会。 实验十一 8255A可编程并行接口实验 一、实验要求: 必做 二、实验类型: 设计 三、实验学时:2 四、实验地点:硬件实验室 五、实验目的: 1、掌握并行接口芯片8255A可编程定时/计数器与8086CPU的接口方法。 2、掌握8255A的工作方式及其编程方法。 六、实验内容: 1.如实验图所示,用8个开关K1—K7,分别控制相应8个发光二极管LED1---LED7的亮暗情况。 程序流程图: 开始 初始化 B口数据送C口 2.用两种编程方法(数据传送和位置位)实现8255A的PC7输出一连续方波,延时可调用DELAY1或DELAY2子程序,输出方波的观察可经过接至PC7的输出显示电路的一个灯(如L1)的亮暗情况,也可用示波器观察。 程序流程图: 开始 初始化 PC7=0 调用延时 PC7=1 调用延时 实验十二 8255A综合运用实验 一、实验要求: 必做 二、实验类型: 设计 三、实验学时:2 四、实验地点:硬件实验室 五、实验目的: 1、 进一步掌握并行接口芯片8255A可编程定时/计数器与8086CPU的接口方法。 2、掌握8255A的工作方式及其编程方法。 3、掌握8255A的综合运用的实现。 六、实验内容: 试编程实现:如实验图所示,当只有开关K1向上(接VCC)时,只有L1灯亮,当只有开关K2向上时只有L2灯亮,当K1、K2均向上时,L1、L2同时闪烁,当L1、L2两开关均向下时,L1、L2都不亮。要求灯能实时反映出开关的状态。己知CS接Y7,Y7提供的端口地址为0070H---0073H。 程序流程图: 开始 初始化 Y PA1/PA0=00? PC1/PC0=00 N Y PA1/PA0=01? PC1/PC0=01 N Y PC1/PC0=10 PA1/PA0=10? N 延时 延时 PC1/PC0=11 PC1/PC0=00 实验十三 彩灯控制实验 一、实验要求: 选做 二、实验类型: 设计 三、实验学时:2 四、实验地点:硬件实验室 五、实验目的: 1、 进一步掌握并行接口芯片8255A可编程定时/计数器与8086CPU的接口方法。 2、掌握8255A的工作方式及其编程方法。 3、掌握利用并行接口芯片8255A实现多种花型的彩灯控制 六、实验内容: 采用8255实现8位彩灯控制,要求至少有6种以上的花型。 基本要求(自己可增加): (1)、L1、L2…L8依次亮灭; (2)、L8、L7…L1依次亮灭; (3)、L1、L2…L8依次亮后又按 L1、L2…L8的顺序依次灭; (4)、L8、L7…L1依次亮后又按 L8、L7…L1的顺序依次灭; 注:延时可调用DELAY1或DELAY2。 实验十四 交通灯控制实验 一、实验要求: 选做 二、实验类型: 设计 三、实验学时:2 四、实验地点:硬件实验室 五、实验目的: 1、 进一步掌握并行接口芯片8255A可编程定时/计数器与8086CPU的接口方法。 2、掌握8255A的工作方式及其编程方法。 3、掌握利用并行接口芯片8255A实现交通灯控制。 六、实验内容: 采用8255可编程的控制芯片,设计模拟真实的交通灯的运行情况。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服