版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE 微机原理实验内容2015实验一 上机方法及寻址方式练习实验目的学习汇编语言上机方法。深入了解DEBUG动态调试软件的应用,掌握下列命令的使用方法:U 反汇编 G 运行程序 D 显示内存内容 R 显示修改寄存器内容 E 修改内存内容 T 单步执行命令 Q 返回DOS实际感受段地址,偏移地址,存储器组织及CPU寄存器等概念。掌握8086/8088的主要寻址方式。实验任务一 双字相加 把内存字单元DATA1和DATA2中的两个数相加(例如123456H+456789H),结果存入SUM单元。 此程序的功能很简单,目的是为了通过该例掌握上机过程和实验方法。首先,对书写好的源程序进行编辑,汇编
2、及连接,生成可执行的EXE文件。然后对EXE文件进行动态调试,排除错误,最终形成一个完全正确的程序。建立源程序 .ASM 为了使大家对标准汇编语言程序结构有一个了解,并牢固掌握DEBUG调试程序的应用。在这里给出上面实验任务的程序清单。程序1是一个标准的汇编语言程序,共有三个段:数据段、堆栈段及代码段,在以后的编程中可以仿照这一结构。 程序1:双字相加DATA SEGMENT ;define data segment DATA1 DW 1234H DATA2 DW 5678H SUM DW ?DATA ENDSSTACK SEGMENT PARA STACK STACK ;define sta
3、ck segment DW 100 DUP (?) TOP LABEL WORDSTACK ENDSCODE SEGMENT ;define code segment ASSUME CS: CODE,DS:DATA,SS:STACKSTART:MOV AX, DATA ;set DS register to current data segment MOV DS, AX MOV AX, STACK ;set up stack SS and SP regist MOV SS, AX MOV SP, OFFSET TOP MOV AX, DATA1 ADD AX, DATA2 MOV SUM, A
4、X MOV AH,4CH ;return to DOS INT 21HCODE ENDS ;end of code segment END START ;end assembly汇编生成 .OBJ 文件 对.ASM文件进行汇编,生成目标文件 .OBJ。 汇编结束时会显示警告错误的个数(Warning Errors)和严重错误的个数(Severe Errors),这两种错误属于.ASM文件中的语法性错误。若出现错误应对源文件(.ASM文件)进行修改,修改之后再进行汇编直至错误数为零时方可进行下一步操作。连接生成 .EXE文件 连接后生成 .EXE可执行文件。4. 利用DEBUG命令对 .EXE文
5、件进行调试 DEBUG是DOS提供的一种调试软件。它可用于检查修改存储单元的内容,装载及运行用户程序。 进入DEBUG后其状态提示符为一短横线“”,在此状态下可用各种命令对 .EXE进行操作。下面是DEBUG的主要命令。(1) 对 .EXE文件进行反汇编U命令U命令格式一: U CS:00001501: 0000 B8F314 MOV AX, 14F3 上述命令从CS段,偏移地址为0000的单元开始反汇编32个字节。在以上的反汇编清单中,最左一列是代码段的段地址值,第二列是各指令的偏移地址值(指令的起始地址),然后依次是指令的机器码与助记符。 U命令格式二: U 在32个字节的指令代码反汇编完
6、之后,可再次使用U命令对后续代码进行反汇编,在此,U命令之后省略了地址,则从上一个U命令的最后一条指令的下一个字节开始反汇编32个字节。 可反复使用上述两种U命令格式,将原程序清单与反汇编清单进行对比分析,然后回答下列问题: 问题1: .EXE装入内存后,其数据段的段地址是 。在未运行 .EXE程序前,数据段的段地址是否已装入到DS寄存器中? (请选择回答:是/否)。 问题2:反汇编清单中倒数第一行(按实际显示行计算)是不是.EXE程序中的有效指令? (请选择:是/不是)。(2) 检查RAM区中的数据D命令 D命令格式: D 数据段段地址:偏移地址(0000) D命令从给定地址开始连续显示内存
7、单元中的数据,每行显示16个字节,每行的显示格式为段地址:偏移地址 16个字节数据及各字节数据所对应的ASCII码字符。 若D命令中没有给出地址,则从上一个D命令所显示的最后一个字节的下一个字节开始显示。合理使用U命令和D命令,分析所显示的信息并填写表1-1。运行机制 (3)运行程序G命令 G命令格式:G = CS:0000 断点地址CPU从CS段,0000单元开始连续执行指令,当遇到断点时便会停止执行。用G 命令执行完程序后再使用D 命令显示内存单元的内容,填写表1-2中各项数据和运行结果,并分析结果是否正确。(4)检查寄存器内容R命令R R命令会显示/修改CPU 所有寄存器的内容,并给出程
8、序执行后各标志位的当前状态。在此,不再列出执行情况。 请用R命令显示CPU 寄存器的内容,填写表1-3。(5) 修改内存单元内容E命令不连续修改内存单元内容,命令格式如下:E 1500:0000 设显示1500H:0000H单元内容为:1500:0000 24. 如果需要修改该单元内容可以由键盘输入数据,按空格则显示/修改下一单元的内容。例如:把1500H:0000H单元的24H内容修改成(注意,在DEBUG中显示的地址码数据均默认为十六进制形式)78H,其操作如下:1500:0000 24. 78 36. 其中36H为1500H:0001H单元的内容。用户可以不断修改相继单元的内容,若某一字
9、节无需修改可用空格键跳过,直到用回车结束该命令为止。修改连续单元的内容。命令格式为:E 1500:0000 12 34 123 该命令将12H、 34H、 31H(1的ASCII码)32H、 33H 存放到从1500:0000开始的连续单元中去。现在要求用E命令按表1-4中给出的数据修改DATA1和DATA2单元的内容,然后用 G命令运行程序,填写表1-4。(6)单步执行命令T命令使用T命令之前,先使用G命令执行程序,使程序暂停在断点处,然后可以使用T命令单步执行指令,其命令格式为:T 其功能是从当前的CS:IP 处执行一条指令后暂停,自动显示各寄存器的内容、标志位的状态并给出下一次将要执行的
10、指令地址及代码。 注意,对REI指令、中断指令、DOS功能调用指令等不能用T命令单步执行。 请用T命令单步执行程序,一次执行一条指令,注意观察各寄存器如AX、IP等的变化情况。(7)退出 DEBUGQ命令QQ 命令后退出DEBUG,返回DOS。三实验任务二: 寻址方式练习 下列程序用于练习8086/8088的立即寻址寄存器寻址直接寻址寄存器间接寻址寄存器相对寻址等七种寻址方式,为了方便调试程序,程序清单的代码段中给出了指令的行号,输入程序时请不要输入行号。 程序清单如下:DATA1 SEGMENT M1DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H M2
11、DB 0A8H,0A9HDATA1 ENDSDATA2 SEGMENT N1DB 0B0H,0B1H,0B2H,0B3H, 0B4H,0B5H,0B6H,0B7H N2DB 0B8H,0B9HDATA2 ENDSSTACK SEGMENT PARA STACK STACK DB 0C0H,0C1H,0C2H,0C3H,0C4H,0C5H ,0C6H,0C7H DB 0C8H,0C9H DW 100 DUP (?) TOP LABEL WORDSTACK ENDSCODE SEGMENT ASSUME CS: CODE,DS:DATA1,ES:DATA2,SS:STACK1 START:MOV
12、AX,DATA1 2 MOV DS,AX 3 MOV AX,DATA2 4 MOV ES,AX 5 MOV AX,STACK 6 MOV SS,AX 7 MOV SP,OFFSET TOP 8 MOV SI,0001H 9 MOV DI,0002H10 MOV BP,0003H11 MOV BX,0004H12 MOV AL,10013 MOV AL,BL14 MOV AL,M115 MOV AL,BX16 MOV AL,ES:BX17 MOV AL,BP 18 MOV AL,BX+05H 19 MOV AL,M1BX20 MOV AL,ES:N1BX 21 MOV AL,BXSI22 MOV
13、 AL,M1BXSI23 MOV AL,N1BXDI24 MOV AL,BPDI25 MOV AH,4CH26 INT 21HCODE ENDSEND START1.建立源程序,然后汇编、连接生成目标文件。2.合理使用DEBUG的U命令和D命令,检查RAM区中的数据,分析所显示的信息并填写表1-5。3. 利用U命令对 .EXE文件进行反汇编, 分析反汇编清单,从第12条指令开始把每条指令的偏移地址填入表1-6的“指令的偏移地址”一栏中。利用T命令从第12条指令开始单步执行程序,每执行一条指令填写表1-6中对应行的其它栏(“SRC寻址方式”、“SRC的地址”、及“AL之值”)。实验数据记录页 实
14、验一 上机方法及寻址方式练习姓 名: 学 号: 实验室门牌号: 实验桌号: 表1-1运行程序前的数据存储情况标号(变量名) 段地址 偏移地址 内存中的内容 DATA1 DATA2 SUM表1-2 运行程序后的数据存储情况标号(变量名)段地址偏移量内存中的内容 DATA1 DATA2 SUM表1-3 有关寄存器内容寄存器名 CS DS IP AX BX CX SI DI 内容表1-4 另一组实验数据及运行结果标号(变量名)段地址偏移量内存中的内容 DATA1(你学号的前4位) DATA2(你学号的最后4位) SUM表1-5 各段的数据分配情况DATA1区地址与数据DATA2区地址与数据STACK
15、 区地址与数据段地址偏移地址数据段地址偏移地址数据段地址偏移地址数据0000H0000H0000H0001H0001H0001H0002H0002H0002H0003H0003H0003H0004H0004H0004H0005H0005H0005H0006H0006H0006H0007H0007H0007H0008H0008H0008H0009H0009H0009H表1-6 指令地址及执行情况行号指令指令的偏移地址SRC的寻址方式SRC的偏移地址指令执行后AL之值12MOV AL,10013MOV AL,BL14MOV AL,M115MOV AL,BX16MOV AL,ES:BX17MOV A
16、L,BP18MOV AL,BX+05H19MOV AL,M2BX20MOV AL,ES:N2BX21MOV AL,BXSI22MOV AL,M2BXSI23MOV AL,N2BXDI24MOV AL,BPDI 注:SRC指源操作数。 实验二 串处理程序设计实验目的进一步使用DEBUG的调试命令,达到熟练掌握的目的。学习串处理程序的设计方法,牢固掌握串操作指令及其用法。学习DOS功能调用方法。实验任务一 字符串传送 编写程序,建立数据段DATA,将你的姓名(汉语拼音)及学号存入数据段的BUFFER1区域,然后利用程序将BUFFER1区域中的字符串(姓名及学号)依次传送到从BUFFER2开始的内存
17、区域中去。1. 编程提示 数据段可以定义为两个段:源数据区定义为数据段,目的数据区定义为附加段。DATA SEGMENTBUFFER1 DB WANG HUAN 01982001M EQU $-BUFFER1DATA ENDSEXTRA SEGMENTBUFFER2 DB M DUP (?)EXTRA ENDS 串的传送可用MOVSB指令来实现,注意,MOVSB要求DS与SI寄存器配合使用,ES与DI配合使用。另外,用CX中的计数值可控制MOVSB指令的重复次数。指令格式为: REP MOVSB 2.实验要求及问题(1) 编写程序,在DEBUG下运行并观察结果,填写表2-1。表2-1 反汇编清
18、单中所反映的相关信息*注:最后一条指令是对应于代码段中最后一条指令(2)在未执行程序之前,用D命令显示内存区域的内容,填写表2-2。表2-2 未执行程序前的数据区内容(3)执行程序以后用D命令显示内存区的内容,填写表2-3。表2-3 执行程序之后的数据区内容(4)用R命令检查寄存器的内容填写表2-4。表2-4 有关寄存器内容寄存器名 CS DS IP AX BX CX SI DI 内容 三实验任务二 DOS 功能调用DOS系统为程序员提供许多子程序可供用户直接调用。调用时需要使用中断指令:INT 21H在使用该指令前,应将调用的功能号送入AH,有关入口参量送入指定寄存器。若有出口参量,中断调用
19、返回后,结果在指定的寄存器或存储单元中。其调用方法如下:送入口参量给指定寄存器;AH 功能号;INT 21H ;主要的几个DOS功能调用说明文件如下。1. 4CH号功能调用 MOV AH,4CH ;子程序编号4CHAH;即功能号4CHAHINT 21H;返回DOS2. 01H号功能调用 ;从键盘输入一个字符(功能号=1);功能号 1 AH;入口参数:无INT 21H ;等待按键,按下一个键则该句执行完毕 ;字符回显 ;出口参数:AL中有键入的字符(ASCII码) 3. 08H号功能调用 ;从键盘输入一个字符;功能号 08 AH;入口参数:无INT 21H ;等待按键,按下一个键则该句执行完,
20、;字符不回显 ;出口参数:AL中有键入的字符(ASCII码)4. 02H号功能调用 ;在显示器上显示一个字符(功能号=2);功能号 02H AH;入口参数:要显示的字符(ASCII码)DL INT 21H02H号功能调用注意事项:(1)02H号功能调用会占用AL寄存器。为了防止02H号功能调用破坏AL寄存器的内容,调用前可把AX压栈,调用完后从堆栈中弹出AX,以便恢复AL之值。 (2)调用21H中断的02号功能时,当DL中置入00(或20H)时即可显示一个空格,必须注意,用DOS调用显示字符,当ASCII码为 07H、08H、09H、0AH和0DH时,不会显示与之对应的字符,DOS分别将这些A
21、SCII码解释为振铃(BEL)、退格(BS)、制表(TAB)、换行(LF)和回车(CR)的控制符,这时屏幕上不会有字符显示,仅仅是执行控制码所表示的操作。所以当按递增顺序显示ASCII码时,应在显示这些控制码的地方显示空格,否则显示格式不对。 (3)用DOS调用时,应用控制码0AH和0DH分别控制换行和回车操作。实验任务二要求:编写下列程序并上机运行,由键盘输入1个英文字母,屏幕上显示该字母。若输入的是小写字母,则另起一行显示对应的大写字母;若输入的是大写字母,则另起一行显示对应的小写字母。实验三 分支程序设计实验目的掌握分支程序的设计方法。掌握无条件转移指令(JMP)及条件转移指令的应用。进
22、一步使用DEBUG的调试命令,达到熟练使用的目的。在DEBUG中提供了测试各个标志位的手段,各标志位的复位(“0”状态)和置位(“1”状态)是用字符表示的,如表3-1所示。在实验过程中要善于使用T命令、 R命令观察分析标志位的变化情况。表3-1 标志寄存器各标志位的显示字符实验任务 码制转换 码制转换的内容很多,现代技术中有各种各样的编码形成。在计算机领域中,最常用的码制有ASCII码、十进制码、二进制码及十六进制码等。这些码制在实际应用中有时需要进行相互转换,在转换过程中可用旋转、移位、比较、转移等指令来实现。至于转换算法,对不同的编码规则其算法就不同,请大家参阅有关书籍准备下列实验内容。任
23、务3-1: 二进制到ASCII码的转换 在DATA单元存放有一个8位二进制码,将其按位转换成一串ASCII码,即1转换成1的ASCII码31H;0转换成30H。并依次存放在以STRING开始的RAM区中(高位在前,低位在后)。转换示例见表3-2。实验要求:1. 在表3-2中分别给出了DATA单元中的三个数据。分别将十六进制数6B、72和C9送入DATA单元,运行程序后把结果填写到表3-2的对应栏目中,并分析结果的正确性。2. 按调试过程中的实际内存分配情况回答下列问题:(1)代码的段地址是 ,第一条指令的偏移地址是 ,最后一条指令的偏移地址是 。(2)源字符串所在数据段的段地址是 ,偏移地址是
24、 。(3)目标字符串所在段的段地址是 ,偏移地址是 。表3-2 二进制转换成ASCII码 次数 及示例 实验数据 实验结果 十六进制 二进制 示例 D2 11010010 31 31 30 31 30 30 31 30 1 6B 01101011 2 72 01110010 3 C9 11001001任务3-2 : ASCII 码到十进制的转换 从STRING1单元开始,存放有一串ASCII码字符(其字符长度为十六个字节,每一个ASCII码占一个字节)。将STRING1中每个字符转换成与之对应的十进制数字,并存放在以STRING2开始的区中(每个十进制数字占一个字节)。如果某一个ASCII码不
25、是0-9之间的数,则将STRING2字串中对应单元置为FFH。实验要求:请参阅表4-1,编写程序上机调试。运行程序,填写表3-3。表3-3 ASCII码到十进制转换的实验数据与运行结果任务3-3:多分支程序设计 编程显示一个简单菜单1,2,3(菜单显示形式不限)。当按下1时,在屏幕上显示你的姓名(汉语拼音);当按下2时,在屏幕上显示你的学号。当按下3时,程序结束。要求:姓名和学号不能在同一行显示(即要控制换行操作)。实验四 循环程序设计实验目的掌握循环程序的设计方法,掌握变址技术的应用。掌握DOS功能调用方法。实验任务实验任务1. DOS功能调用 表4-1是ASCII码编码表,要求编写程序,将
26、这些字符以16行、16列的表格形式显示出来(显示效果见图4-2),要求显示时按ASCII码的递增顺序分行显示(即行内ASCII码依次递增,与表4-1中给出的表格行列位置正好倒置)。表4-1 ASCII码编码表表4-1 ASCII码编码表(续)编程提示:(1).显示一个字符,可使用21H中断的02号功能来实现。方法如下: MOV AH, 02H ; 02号功能调用 MOV DL, 要显示的ASCII码/动作控制码 INT 21H调用21H中断的02号功能时,当DL中置入00(或20H)时即可显示一个空格,必须注意,用DOS调用显示字符,当ASCII码为 07H、08H、09H、0AH和0DH时,
27、不会显示与之对应的字符,DOS分别将这些ASCII码解释为振铃(BEL)、退格(BS)、制表(TAB)、换行(LF)和回车(CR)的控制符,这时屏幕上不会有字符显示,仅仅是执行控制码所表示的操作。所以当按递增顺序显示ASCII码时,应在显示这些控制码的地方显示空格,否则显示格式不对。 另外,用DOS调用时,应用控制码0AH和0DH分别控制换行和回车操作。(2).使用BIOS调用时,所有字符都可以显示出来。用BIOS调用,可用BIOS中断10H的0A号功能实现字符显示。BIOS中断10H的0A号功能调用参数如下:入口参数:AH=0AH ;选择10H中断的0A号功能AL=显示字符的ASCII码 ;00FFHBH=03 ;选择屏幕的显示页,一般取0BL ;文本方式下不预置BL之值。CX=显示次数 ;决定AL中的字符在屏幕上显示的次数,取1。出口参数:一个或多个字符显示在屏幕上。使用BIOS调用时,要用10H的02号功能控制光标的移动(BIOS 10H中断的0A号功能调用不移动光标),以实现显示空格、换行、回车等功能。BIOS中断10H的02号功能调用参数:入口参数:AH=02H ;控制光标位置DH=光标行位置 ;024行DL=光标列位置 ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双边新能源投资合作模式-洞察分析
- 铁路车辆故障诊断与决策支持-洞察分析
- 一级亲属遗传咨询策略-洞察分析
- 2024年柞水县人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 农产品质押合同(2篇)
- 计算机组装与维护项目教程项目教程课件
- 2024年沪科新版九年级科学下册月考试卷
- 2024年昌黎县中医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 2024年华东师大版七年级科学下册阶段测试试卷含答案
- 2024年北师大版七年级物理上册阶段测试试卷含答案
- 消防水域救援个人防护装备试验 大纲
- 机电样板施工主要技术方案
- 涉税风险管理方案
- 青岛市2022-2023学年七年级上学期期末道德与法治试题
- 高空作业安全免责协议书范本
- 石油化学智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 手术后如何防止排尿困难
- 特种设备“日管控、周排查、月调度”表格
- 重点关爱学生帮扶活动记录表
- 2021年10月自考00850广告设计基础试题及答案含解析
- 结构化面试表格
评论
0/150
提交评论