ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:48.50KB ,
资源ID:8536302      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8536302.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(寻址方式与基本指令实验.doc)为本站会员(dcs1276)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

寻址方式与基本指令实验.doc

1、微机原理第一次试验寻址方式与基本指令实验班级:姓名:学号: 日期:一、试验目的(1)熟悉 80x86 寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。(2)掌握汇编语言程序设计上机过程和汇编语言源程序结构,为后续汇编语言程序设计打好基础。(3)熟悉 Microsoft 的 DEBUG 或 Borland 的 Turbo Debugger 调试工具的使用方法。二、实验内容(1)读懂下列源程序,使用 EDIT 生成名为 EX11.ASM 的源程序,汇编生成 EX11.OBJ 文件和 EX11.LST 文件,连接生成EX11.EXE 程序,注意观察 IP 值的变化,并回答下列问题。程序装入后

2、,代码段寄存器 CS 的内容为 0913H,代码段第一条可执行指令“MOV AX, DATA”对应的机器代码为 B81209H,它是一个 3 字节指令,注意观察执行该指令时 IP 值的变化情况,该指令源操作数 DATA 的寻址方式是 立即数寻址方式,其值为 0912H。执行完“MOV DS, AX ”指令后,数据段寄存器 DS 的内容为 0912 H,源程序在数据段中定义的数据 82H、68H 和 88H 被装入的存储单元的物理地址分别为 09120H、09121H 和 09122H。程序中的一条“ADD AL, BX”指令对应的机器代码 为0207 H,它是一个 2 字节指令,注意观察执行该

3、指令时 IP 值的变化情况;该指令中源操作数的寻址方式为寄存器间接寻址方式,该操作数所在存储单元的逻辑地址(DS):(BX)为 0912:0001,其物理地址为 09121H;执行完该指令后(AL )=EAH,CF=0,OF=0,ZF=0,SF=1,AF=0,PF=0 ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数?答:若两操作数为无符号数,计算结果正确;若两操作数为带符号数,计算结果正确;结果应为负数。执行完第二条“ADD AL, BX”指令后(AL)= 72 H,CF=1,OF= 1,ZF=0,SF=0,AF= 1,PF

4、=1; 若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?答:若两操作数为无符号数,计算结果不正确;若两操作数为带符号数,计算结果不正确。指令“MOV SUM, AL ”中,目的操作数的寻址方式为直接寻址方式 。该指令执行完后,注意观察(DS):0003H 单元中值的变化,该单元的值变为 72 H。DATA SEGMENTNUM DB 82H, 68H, 88HSUM DB ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV BX, OFFSET NUMMO

5、V AL, BXINC BXADD AL, BXINC BXADD AL, BXMOV SUM, ALMOV AH, 4CHINT 21HCODE ENDSEND START (2)读懂下列源程序,编辑、汇编、连接生成EX12.ASM、EX12.OBJ 、EX12.LST、EX12.EXE 文件使用 DEBUG单步调试 EX12.EXE 文件,并回答一下问题。代码的前三段指令“MOV AX, STACK”、“ MOV SS, AX”和“ MOV SP, LENGTH STL”的功能为堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元的逻辑地址(SS): (SP)为 0912:0100 ;执行

6、“PUSH AX”指令后,堆栈指针寄存器(SP)=00FEH,此时( SS): (SP+1)和(SS): (SP)单元的值为 0AH 和 5B H;执行完“PUSH BX”后,(SP)= 00FC H;此时(SS): (SP+1)和(SS ): (SP)单元的值为 4CH 和 A3 H;执行完“POP AX”后,(SP)= 00FEH;执行完 “POP BX”后,(SP)= 0100 H, 此时(AX )=4CA3 H,( BX)= 5B0A H。请读者通过对堆栈操作指令执行情况的观察,进一步掌握进、出栈操作过程。执行“ADD AX, BX”指令后,(AX )=A7AD H ,CF=0 ,OF

7、= 1,ZF=0 ,SF=1,AF=0 ,PF=0,(注意考虑 PF 值与计算结果高 8位有无关系);若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?答:若两操作数为无符号数,计算结果正确;若两操作数为带符号数,计算结果不正确。执行“AND AX, BX”指令后,(AX )= 4802 H,CF= 0 ,OF= 0,ZF=0 ,SF=0,AF=0 ,PF=0.STACK SEGMENT stackSTL DW 100H DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, SS:STACKSTART: MOV AX, STAC

8、KMOV SS, AXMOV SP, LENGTH STL ;表达式“LENGTH STL ”的功能为计算 STL 中定义的变量的个数;汇编后其值为 100HMOV AX, 0101101100001010BMOV BX, 0100110010100011BPUSH AXPUSH BXADD AX, BXPOP AXPOP BXAND AX, BXMOV AH, 4CHINT 21HCODE ENDSEND START(3)指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错信息,改正后上机验证。MOV BP, BL MOV BX, BP MOV BX, 20H INC

9、 SIADD AX,SI+DI SHL AX, 3PUSH 2000H POP ALMOV CS, AX MOV DS,1000H答:出错信息:warning A4031:Operand types must match错误原因:操作数类型不匹配, BP 是一个 16 位寄存器,而BL 是一个 8 位寄存器。 改正后:MOV BP, BX ; 出错信息:error A2052:Improper operand type错误原因:源操作数和目的操作数不能同时为存储器。改正后:MOV AX, BP MOV BX, AX ;出错信息:error: A2035:Operand must have si

10、ze错误原因:源操作数长度不明确出错信息:error: A2035:Operand must have size错误原因:操作数的长度未指定出错信息:error: A2047:Multiple index registers错误原因:同时使用了多个变址寄存器出错信息:error A2052:Improper operand type错误原因:循环次数大于 1 应该间接移位出错信息:error A2056:Immediate mode illegal错误原因:不能对立即数进行栈操作出错信息:error A2058:Byte register illegal错误原因:要求用字寄存器而使用了字节寄存

11、器出错信息:error A2059:Illegal use of CS register错误原因:CS 不能作为目的操作数出错信息:error A2056:Immediate mode illegal错误原因:立即数不能送入数据段三、实验简要步骤1.使用记事本 notepad.exe 编写源代码,或者用 EDIT.EXE,生成 asm 后缀的源程序;2.运行 CMD,进入汇编环境所在目录;3.使用 MASM.exe 编译源代码文件,此时目录下生成 obj 后缀的目标文件。4.使用 LINK.exe 连接目标文件,此时目录下生成 exe 后缀的可执行文件。5.使用 DEBUG.exe 来调试,查看程序运行过程:-T:单步执行 -U: 反汇编-D: 显示内存 -Q :结束调试四、实验小结通过实验一,熟悉掌握了汇编语言程序设计的上机步骤,了解了编译连接的过程,以及调试工具的各种命令。实践的过程中我对于实验用到的基本指令和寻址方式加深了理解,并再次认真读了课本,进一步巩固了课堂学习内容。实验中遇到过一些值得注意的问题:输入源代码时,少了空格会导致编译错误;编写的源程序必须保存为.asm 而不是.asm.txt;调试时必须输入文件名如 debug a.exe,否则调试的不是正确的程序。在以后的实验中应当注意积累这些经验,提高效率。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报