资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
-1. 汇编语言程序设计实验篇1.1. 汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug的模拟器。它能模拟一台虚拟的电脑运行程序,拥有独立的硬件,防止访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中存放器、标志位、堆栈和存单元的容。1.1.1 创立程序1. TEMPLATE程序本章与指令相关的实验都是用 TEMPLATE类型的程序完成的。翻开emu8086,在wele对话框中,单击按钮,创立文件。在choose code template对话框中,选择 template-simple and tiny e*ecutable file format, pure machine code.后,单击按钮。在如所示的编辑界面中,在;add your code here局部输入相应的指令,第一条指令默认的偏移地址为100h。输入全部指令后,单击按钮,保存相应的程序段。2. E*E TEMPLATE程序本章与DOS功能调用和汇编源程序相关的实验都是用E*E TEMPLATE程序完成的。翻开emu8086,在wele对话框中,单击按钮,创立文件。在choose code template对话框中,选择E*E template-advanced e*ecutable file.header: relocation, checksum.后,单击按钮。在如下图的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在add your data here和;add your code here局部可以分别输入相应的变量定义和指令。输入全部指令后,单击按钮,保存相应的程序。1.1.2 执行程序在编辑界面中,如下图,单击按钮,自动完成源程序的编译和。在emulator对话框中,左边局部列出了存放器的当前值,右边局部是已经输入的程序段,中间局部是右边每条指令的物理地址和对应的机器代码,中间的文本框中列出了当前指令的CS和IP。单击按钮,可以单步执行一条指令;单击按钮,可以一次执行完所有程序;单击按钮,可以重新回到第一条指令的位置处;单击按钮,可以重新加载另一个程序。修改emulator对话框中文本框的容,也可以观察其它段的容,在图所示界面中,DS=0700H,假设要观察该数据段中偏移地址为6000H位置处的存单元容,可以在文本框中输入0700:6000,显示结果如下图,中间局部依次列出从该地址开场的所有字节的容。在emulator对话框的底部,单击按钮,可以观察栈的容;单击按钮,可以观察标志存放器中标志位的容。在emulator对话框中,选择view菜单中的memory菜单项,也可以观察存的情况。在Random Access Memory对话框中,可以修改文本框中的值可以确定所要观察的地址,该值由段基地址:段偏移地址构成,如下图,当前要观察的存地址为6000:0010。在显示结果中,左边是逻辑地址,中间是从该地址的开场连续16个字节的容,右边是每个字节对应的字符。在该对话框中,也可以直接修改存储器单元的值,如下图,从60010H开场的连续4个字节的容已经被修改为12H,34H,56H和78H。1.2 根底实验1.2.1 数据传送指令1. 实验目的1熟悉8086指令系统的数据传送指令及8086的寻址方式。2利用emu8086调试工具调试汇编程序。2. 实验设备微型计算机、emu80863. 实验原理通用数据传送指令包括:1通用数据传送指令,如MOV,PUSH,POP,*CHG,CBW,CWD;2目标地址传送指令,如LDS,LES;3标志传送指令,如LAHF,SAHF,PUSHF,POPF;4输入输出指令,如IN,OUT,LEA寻址方式包括:1立即寻址;2直接寻址;3存放器寻址;4存放器间接寻值;5存放器相对寻址;6基址-变址寻址;7基址变址相对寻址;8隐含寻址4. 实验容1创立 TEMPLATE程序,输入以下程序段,观察程序的执行情况,程序段如下:MOV BL,08H;B*=MOV CL,BL;CL=MOV A*,03FFH;A*=MOV B*,A*;B*=MOV DS:6000H,B*;DS:6000H=提示:在emulator对话框中间的文本框中输入段基地址:段偏移地址,可以观察其它逻辑段相应存储单元的容2创立 TEMPLATE程序,用以下程序段将一组数据压入PUSH堆栈区,然后通过三种不同方式出栈。观察栈的变化情况提示:在emulator对话框中,单击按钮可以观察栈中容以及出栈后数据的变化情况,并把结果填入表11中。程序段如下:MOV A*,0102HMOV B*,0304HMOV C*,0506HMOV D*,0708HPUSH A*PUSH B*PUSH C*PUSH D*第种出栈方式的指令序列:POP D*POP C*POP B*POP A*第二种出栈方式的指令序列注:替换掉第种出栈方式的指令序列:POP A*POP B*POP C*POP D*第三种出栈方式的指令序列注:替换掉第二种出栈方式的指令序列:POP C*POP D*POP A*POP B*表11数据传送实验结果表格存放器的值第一种出栈方式第二种出栈方式第三种出栈方式A*=B*=C*=D*=3创立 TEMPLATE程序,分别输入以下指令,按要求设置各存放器及存单元的值提示:在emulator对话框中,可以直接修改存放器的值;选择view菜单中的memory菜单项可以设置存单元的值,其中B*0010H,SI0001H,60010H12H,60011H34H,60012H56H,60013H78H,60120H0ABH,60121H0CDH,60122H0EFH,观察指令执行后A*中的容。1MOV A*,1200H2MOV A*,B*3MOV A*,0120H4MOV A*,B*5MOV A*,0110HB*6MOV A*,B*SI7MOV A*,0110HB*SI4创立 TEMPLATE程序,试分别用8086的直接寻址、存放器间接寻址、变址寻址、存放器相对寻址传送指令编写程序段,将DS:6000H字节存储单元中的容传送到DS:6020H单元中。5设A*=1111H,B*=2222H,DS:6010H=3333H。试编写 TEMPLATE程序,将A*的容与B*的容交换,然后再将B*的容与DS:6010H单元的容进展交换。6假设DS:6000H=0EEFFH,ES:7000H=0CCDDH,请编写 TEMPLATE程序,将两个存储单元的容交换。5. 实验习题指出以下指令的错误并加以改正,并在emu8086中验证。1MOV B*,SI2MOV AH,B*3MOV A*,SIDI4MOV BYTE PTRB*,2000H5MOV CS,A*6MOV DS,2000H6. 实验报告要求1) 整理源程序段和运行结果。2) 给出几种在emu8086中观察存单元的方法。1.2.2 算术逻辑运算指令1. 实验目的1熟悉算术逻辑运算指令的功能。2了解标志存放器中各标志位的意义以及指令执行对它的影响。2. 实验设备微型计算机、emu80863. 实验原理算术运算指令包括:1加法指令,如ADD,ADC,INC;2减法指令,如SUB,SBB,DEC,NEG,CMP;3乘法指令,如MUL,IMUL;4除法指令,如DIV,IDIV。逻辑运算指令包括:AND,OR,NOT,*OR,TEST4. 实验容1创立 TEMPLATE程序,输入以下程序段,单步执行并记录标志位的变化情况提示:在emulator对话框中,单击按钮观察标志存放器的值。程序段及结果表格如表12。表12算术逻辑运算实验结果表格标志位程序CFZFSFOFPFAF程序段1000000MOV A*, 1018HMOV SI, 230AHADD A*, SIADD AL, 30HMOV B*, 3FFHADD A*,B*MOV 20H, 1000HADD 20H, A*PUSH A*POP B*程序段2000000MOV A*, 0A0AHADD A*, 0FFFFHMOV C*, 0FF00HADC A*, C*SUB A*, A*INC A*OR C*, 0FFHAND C*, 0F0FHMOV 10H, C*程序段3000000MOV BL, 25HMOV BYTE PTR10H, 4MOV AL, 10HMUL BL程序段4000000MOV WORD PTR10H,80HMOV BL, 4MOV A*, 10HDIV BL2用B*作为地址指针,从B*所指的存单元0010H开场连续存入三个无符号数(10H、04H、30H),计算存单元中这三个数的和,并将和放在0013H单元中,再求出这三个数的乘积,并将乘积存入0014单元中,写出完成此功能的 TEMPLATE程序。3创立 TEMPLATE程序,写出完成下述功能的程序段,并指出程序运行后A*1将15H传送到AL;2再将AL的容乘以2;3将15H传送到BL;4把AL的容乘以BL的容。4创立以下两个程序段的 TEMPLATE程序并上机验证。1给数据段中从偏移地址1000H开场的12个字存储单元的容赋值,请将第4条比拟指令填写完整划线处。MOV SI,1000HNE*T: MOV WORD PTRSI,1ADD SI,2CMP SI,JNE NE*T2假定要按高地址到低地址的顺序进展去除操作高地址从
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号