自动化微机实验指导手册.doc_第1页
自动化微机实验指导手册.doc_第2页
自动化微机实验指导手册.doc_第3页
自动化微机实验指导手册.doc_第4页
自动化微机实验指导手册.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 实验一实验一 熟悉汇编语言程序设计的实验环境熟悉汇编语言程序设计的实验环境 一、实验目的一、实验目的 1、熟悉 MASM5.0 汇编环境和汇编过程。 2、熟练掌握汇编程序从编写到执行的过程。 二、实验内容及步骤二、实验内容及步骤 对汇编程序设计而言,目前绝大多数应用是基于 MASM 的宏汇编语言。通 常,汇编语言系统软件包括: (1)汇编语言编译器:将汇编语言源程序(.ASM 文件)翻译为二进制目 标代码(.OBJ 文件) 。具有这个功能的编译器有 MASM.EXE、ML.EXE 和 CV.EXE 等。本书使用较为普遍的 MASM5.0 版本。 (2)连接器:连接二进制目标代码和库函数代码生成可执行程序(.EXE 文件) ,常用的程序为 LINK.EXE。 (3)动态调试器:对可执行程序(.EXE)进行静态了解和动态执行调试, 具有这个功能的软件有 DEBUG.EXE、TR.EXE 等。本书使用较为普遍的 DEBUG.EXE。 注意:注意:上述软件要在 PC 机的 DOS 系统下运行。在 WINDOWS 操作系统 上,提供了模拟的 DOS 操作系统环境。 (一)了解实验环境(一)了解实验环境 1、下载 MASM 文件夹到学生机上的 e:。 2、进入 DOS 环境中。 单击电脑桌面左下角的“开始”点击“运行”输入 “cmd” ,如下图 1-1 和图 1-2 所示。 2 图 1-1 打开“运行”对话框 图 1-2 显示“运行”对话框 单击“确定”后,进入 DOS 方式,如图 1-3 所示。 图 1-3 3、改变路径,进入到汇编编译器 MASM 所在的路径,如图 1-4 图 1-4 4、查看汇编编译器 MASM 所在文件夹 masm,是否具备所需的汇编语言系统 软件,如图 1-5。 图 1-5 列出的当前目录中必须有 MASM.EXE 和 LINK.EXE 文件文件,否则汇编语言 实验将无法进行。随着用户上机操作的进行,在该文件夹中将不断增加新的文 3 件。 (二)熟悉汇编语言程序设计的上机过程(二)熟悉汇编语言程序设计的上机过程 汇编语言程序设计的上机操作流程如下: (1)建立与编辑汇编语言源程序。 方式一: 使用 DOS 系统中的 EDIT.EXE 程序来编辑源程序。 (由于 EDIT.EXE 是常 驻内存的程序,因此,并不需要出现在文件夹 masm 中。 ) E:masmedit sy1.asm 将出现对话框,如图 1-6 所示。 图 1-6 编辑完源程序,如图 1-7 所示。File/save,保存好汇编语言程序源文件。 图 1-7 方式二: 采用“记事本”建立并编辑汇编语言源程序(扩展名为.asm) 。 源程序如下:源程序如下: CODE SEGMENT ASSUMECS:CODE MOVAX,0123H MOVBX,4567H MOVAH,4CH INT21H 4 CODE ENDS END 编辑完成后,将文件保存为:文件名 sy1.asm。 注:分号后的文字是程序的注释,可以不输入;为了使得汇编语句更整齐, 可用 Tab 键设置间隔,如输入 MOV按 Tab输入 AX) (2)汇编(即编译) 。 使用宏汇编程序 MASM 对.asm 文件进行汇编,即对.asm 文件进行语法检 查,在没有语法错误的情况下,可将.asm 文件汇编成.obj 文件。 E:masmmasm sy1.asm (注:事先应将源程序文件 sy1.asm 保存在文件夹 E:masm 中。 ) 汇编完成后,窗口中若出现图 1-8 的提示,表明源程序中没有错误(0 warning errors 和 0 severe errors) ,可继续往下一步。否则,要回到源程序 sy1.asm 中改正错误,再重新汇编,直至出现图 1-8 所示的提示信息为止。 (3)连接。通过连接程序 LINK.EXE,将.obj 文件连接成在可执行文件.exe。 如图 1-9 所示。 图 1-9 上图中出现的 warning 是 no stack segment,可忽略。 如果连接不成功,必须重新编辑、汇编和连接,直至生成可执行文件。 (4)运行与调试。 上述编译、连接的过程只是保证了没有语法上的错误或较为简单的错误, 图 1-8 5 并不能保证程序在逻辑或算法上没有出错,所以,必须对程序的执行过程进行 调试、跟踪分析,才能保证所设计程序的正确性。 由于汇编语言指令系统涉及的输入输出较复杂,因此,通常程序运行的结 果往往存放在内存单元或寄存器中,因此,初学汇编语言程序设计时,要了解 程序运行结果,就必须熟练掌握直接深入内存的调试程序 DEBUG.EXE。 在完成步骤(1)(3)后,如果 sy1.exe 的运行结果达不到要求或出现异 常,则要修改源程序,再重新进行编辑、编译、连接和运行调试(即步骤(1) (4) ) 。 用调试程序(Debug)来对可执行文件进行调试、跟踪一个程序的运行过 程: 进入 Debug.EXE 调试程序。如图 1-10。 图 1-10 进入 Debug 调试环境后,出现提示符“-” ,此时,可键入所需的 DEBUG 命令。 DEBUG 命令。 -用 u 命令查看一下 Debug 加载入内存的程序。 -用 t 命令单步跟踪程序执行的情况 。 -用 r 命令查看寄存器的内容。 -用 d 命令查看内存单元的内容。 -用 g 命令执行程序或程序连续运行,直至程序正常终止,出现“Program terminated normally”提示。 -退出 Debug 程序用 q 命令。 -对于某些中断程序、子程序,没有必要进行单步跟踪时,用 p 命令,直接 执行完该中断程序或子程序,如遇到 DOS 功能调用指令 int 21h,用 P 命令后, 在执行完 int 21h 指令,会返回到 int 21h 的下一条指令上。 实验步骤:实验步骤: 用 u 命令,查看一下 Debug 加载入内存的程序,如图 1-11。显然,本实验 6 中的 sy1 中的汇编语句在前面四行中。 图 1-11 用一次 r 命令,观察在程序执行前寄存器 AX、BX 的内容,记录其值。如 图 1-12 所示。 图 1-12 用 t 命令单步执行 sy1 中的每条语句,观察寄存器 AX、BX 的变化,记录 其值,直至出现语句 int 21h,用 p 命令。如图 1-13 所示。 图 1-13 根据实验结果,AX=0123H,BX=4567H,与实验设想的结果相同,故本程 序 sy1.asm 实现了实验要求。 三、思考题三、思考题 1. 汇编程序从写出到执行的过程包括哪些步骤? 7 2. 已知用 Debug.EXE 将 sy1.EXE 程序加载入内存后,CX 中存放的是程序的长 度,则本实验中的程序长度为 字节。 3. 已知 DS 中存放着 sy1.EXE 程序所在内存区的段地址,从 DS:0 起始的内存 区,前 256 个字节存放的是 PSP(程序段前缀,DOS 用来和程序进行通信) , 从 256 字节后的空间才开始存放程序。所以,本实验中存放程序的起始物理地 址为: ,可用段地址和偏移地址表示为: 。 提示:存放程序的起始内存单元物理地址: PA =(DS)16+256 =(DS)16+0100H =(DS)24+28 =(DS)+24 24+0000H =(CS)24+0000H 4. 将下面的程序保存为 sy2.asm 文件,并将其生成可执行文件 sy2.exe。 CODE SEGMENT ASSUMECS:CODE MOVAX,2000H MOVSS,AX MOVSP,0 ADDSP,10 POPAX POPBX PUSHAX PUSHBX POPAX POPBX 8 MOVAH,4CH INT21H CODEENDS END 用 DEBUG.EXE 调试 sy2.exe,写出每一步执行后,相关寄存器的内容。 9 实验二实验二 寻址方式与基本指令的使用寻址方式与基本指令的使用 一、实验目的一、实验目的 熟悉 8086 寻址方式及基本指令的功能。 二、实验内容二、实验内容 1. 读懂源程序,将其生成可执行文件 sy3.exe。 DATA SEGMENT NUM DB 82H,68H,88H SUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET NUM MOV AL,BX INCBX ADDAL,BX INCBX ADD AL,BX MOVSUM,AL MOVAH,4CH INT21H CODE ENDS END START 2. 回答下列问题。 (1)程序加载后,寄存器 CS 的内容为 H,代码段第一条可执行指令 “MOV AX,DATA”对应的机器码是 H,它是一条 个字 节的指令,该指令的源操作数 DATA 的寻址方式是 。 10 (2)执行完 MOV DS,AX 指令后,数据段寄存器 DS 的内容为 H,源 程序数据段中定义的数据 82H、68H、88H 对应的存储单元的偏移地址分别是: H、 H、 H。 (3)程序中的第一条 ADD AL,BX 指令中,源操作数所在存储单元逻辑 地址为(DS):(BX)= ,执行该指令后(AL)= H,CF= H,OF= ,ZF= ,SF= ,AF= ,PF= 。 (4)执行完第二条 ADD AL,BX 指令后, (AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= 。 (5)指令 MOV SUM,AL 中,目的操作数的寻址方式为 ,该 指令执行后,SUM 单元中的值为 H。 三、上机自测题三、上机自测题 1. 指出下列指令错误的原因,上机运行,观察汇编程序 MASM 给出的出错信 息, (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 2000H(8)POP AL (9)MOV CS,AX(10)MOV DS,1000H 附:状态标志位在附:状态标志位在 DEBUG.EXE 中如何显示中如何显示 1、0 的状态的状态 标 志 名置 位 (为 1)复 位 (为 0) 溢出 Overflow(是/否)OVNV 方向 Direction(减量/增量)DNUP 中断 Interrupt(允许/屏蔽)EIDI 符号 Sign(负/正)NGPL 零 Zero(是/否)ZRNZ 辅助进位 Auxiliary Carry(是/否)ACNA 奇偶 Parity(偶/奇)PEPO 进位 Carry(是/否)CYNC 11 实验三实验三 多字节二进制加、减法编程实验多字节二进制加、减法编程实验 一、实验目的一、实验目的 1、熟悉汇编语言二进制多字节加法基本指令的使用方法; 2、熟悉汇编语言二进制多字节减法基本指令的使用方法; 3、掌握汇编语言编程的一般结构。 二、实验内容及步骤二、实验内容及步骤 1、将两个双字长度的数分别相加并将结果存放在 result 中。 分析: (1)存放多精度数 多精度数的存放有两种方式,高地址优先(如 1234H,5678H 表示 56781234H)和低地址优先(如 1234H,5678H 表示 12345678H) ,具体的存放 方式由用户根据自己的习惯选择。在这里虑我们使用了高地址优先的存储方式。 (2)分析程序设计 由于汇编语言的 ADD,ADC,SUB,SBB 指令都不支持两个操作数都是存 储器操作数的情况,因此将一个操作数的低字放到寄存器 AX 中,高字放到寄 存器 DX 中分别完成高字部分的加法,高字部分的带进位加法。 (3)具体程序设计 DATA SEGMENT DATA1 DW 5311H,8A13H ;表示数据 8A135311H DATA2 DW 4783H,9526H ;表示数据 95264783H RESULTDW 2 DUP(?) ; 存放多字节加法的结果 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: 12 MOV AX,DATA MOV DS,AX MOV AX,DATA1 MOV DX,DATA12 ADD AX,DATA2 ;低字部分相加 ADC DX,DATA22;高字部分带进位相加 MOV RESULT,AX ;存放低字部分相加结果 MOV RESULT2,DX ;存放高字部分相加结果 CODE ENDS END START 2、编写程序,实现长度为 2 字的两个多精度数相减。利用 DEBUG 程序进 行调试,查看数据区的加减法结果是否正确。 3、编写程序,实现一个长度为 3 字的多精度数和一个长度为 2 字的多精度 数相加减。利用 DEBUG 程序进行调试,查看数据区的加减法结果是否正确。 三、思考题三、思考题 在例子中没有考虑最高位溢出的问题,若考虑到最高位可能发生溢出,该 如何修改程序。 13 实验四实验四 十进制数的十进制数的 BCD 加、减法编程实验加、减法编程实验 一、实验目的一、实验目的 1、熟悉 BCD 码的基本知识。 2、熟悉汇编语言 BCD 码多字节加减法基本指令的使用方法。 3、掌握 BCD 码调整指令的使用方法。 二、实验内容及步骤二、实验内容及步骤 1、分别计算长度为 2 字节的两个压缩 BCD 码相加和长度为 2 字节的两个非 压缩 BCD 码相加。 分析: (1)分析程序设计 这里我们仍然采用高地址优先的方式来存放多精度数,高位相加的时候采 用带进位相加。只是由于 BCD 码的加法是十进制数相加,所以每次相加之后都 要进行调整。压缩的 BCD 码加法采用指令 DAA 进行调整,非压缩的 BCD 码采用 指令 AAA 进行调整。 (2)具体程序设计 DATA SEGMENT BCD1DB 34H,18H;压缩的 BCD 码表示十进制数 1834 BCD2DB 89H,27H;压缩的 BCD 码表示十进制数 2789 RESULT1DB 2 DUP(?);存放压缩的 BCD 码相加的结果 BCD3 DB 05H,02H ;非压缩的 BCD 码表示十进制数 25 BCD4 DB 08H,03H ;非压缩的 BCD 码表示十进制数 38 RESULT2DB 2 DUP(?);存放非压缩的 BCD 码相加的结果 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX 14 ;压缩的 BCD 码相加计算 MOV AL,BCD1 ADD AL,BCD2 DAA MOV RESULT1,AL MOV AL,BCD1+1 ADC AL,BCD2+1 DAA MOV RESULT1+1,AL ;非压缩的 BCD 码相加计算 MOV AL,BCD3 ADD AL,BCD4 AAA MOV RESULT2,AL MOV AL,BCD3+1 ADC AL,BCD4+1 AAA MOV RESULT2+1,AL CODE ENDS END START 2、编写程序,分别实现长度为 2 字节的两个压缩 BCD 码相减与长度为 2 字节的两个非压缩 BCD 码相减。利用 DEBUG 程序进行调试,查看数据区的减 法结果是否正确。 3、编写程序,实现长度分别为 3 字节、2 字节的两个压缩 BCD 码相减与 长度分别为 3 字节、2 字节的非压缩 BCD 码相减。利用 DEBUG 程序进行调试, 查看数据区的减法结果是否正确。 三、思考题三、思考题 在例子中没有考虑最高位溢出的问题,若考虑到最高位可能发生溢出,该 如何修改程序。 15 实验五实验五 逻辑运算编程实验逻辑运算编程实验 一、实验目的一、实验目的 1、了解汇编语言的逻辑运算指令; 2、熟悉汇编语言中逻辑运算指令的使用方法; 3、掌握利用汇编语言逻辑运算指令实现程序设计的方法。 二、二、实验内容及步骤实验内容及步骤 1、实验内容 (1)用 A 命令编写程序片段,实现逻辑非,逻辑与,逻辑或,逻辑异或, 逻辑测试运算; 提示:进入 DEBUG 调试环境,用 A 命令输入程序片段如图 7-1 所示。 图 7-1 (2)得到实际的结果,用 T 或 P 命令查看结果正确性。 图 7-1 是实现的是逻辑非的运算验证。然后,用 P 或 T 命令查看寄存器 AX 内容的变化,如图 7-2 所示。 图 7-2 (3)实验内容 进行逻辑测试运算中,注意状态和标志位的变化,并记录。 逻辑非:NOT 14H 16 逻辑与:32H AND 0FH 逻辑或:32H OR 0FH 逻辑异或:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论