- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
调试程序:DEBUG DEBUG Prog.exe ;将Prog.exe程序装入内存 -R ;显示各寄存器内容 -P ;单步执行 -T ;单步执行,可进入子程序等内部 -D ;显示内存单元内容 -E ;修改内存单元内容 -G ;断点执行 -U ;反汇编 -Q ;退出命令 4.4 汇编语言的上机过程 1、计算分析题: 设DS=2BC3H,数据段中符号定义如下, 试写出每个符号所对应值。 DATA SEGMENT ORG 1000H MAX EQU 0FFFH VAL1 EQU MAX MOD 10H VAL2 EQU VAL1*2 BUFSIZ EQU ((VAL2 GT 10H) AND 10H)+10H BUFFER DB BUFSIZ DUP(41H, 61H) VAL3 EQU $ - BUFFER BUFEND EQU BUFFER+BUFSIZ-1 DATA ENDS 2、上机题: 见 上机作业.doc 习题: * 汇编语言采用分段的方式来组织代码和数据,程序中的逻辑段与存储器中的物理段相对应,包括数据段、堆栈段和代码段。 程序由语句构成,汇编语言的语句分为两种,指令性语句和指示性语句, 指令性语句为可执行的语句,由8086指令构成 指示性语句为说明性的语句,由伪指令构成 构成语句的元素包括,标号,符号,指令助记符,操作数以及注释。 其中,标号为指令的存储地址,符号代表变量、段以及过程等的存储地址 指令助记符包括8086指令助记符和伪指令助记符 操作数可为标号、常量、变量和表达式等。 表达式由标号,常量、变量等于运算符构成,常用表达式的运算符有五种, 上节课我们讲了算术和逻辑运算符,下面继续介绍表达式其它的运算符 * × * × * * 变量和标号具有三个属性,段地址,偏移地址,以及类型。段地址和偏移地址用于确定变量和标号在内存中的存储地址。 其执行过程不同。运算符在汇编过程中取变量VAR的偏移地址,指令LEA在程序的执行过程中取VAR的偏移地址。 * 属性运算符PTR用来指定地址操作数的类型,格式为类型 PTR 地址操作数 可指定的类型包括, 对于变量的地址可为字节型,字型和双字型,表明该地址中存储数据的类型,比如类型为WORD,则表明该地址中存储的是一个字型数据 对于标号的地址可为代表标号的属性为进程和远程,近程属性用于段内调用,远程属性用于段间调用 属性运算符PTR常用于指令中的操作数类型不明确时,来指明类型 * 对于属性运算符PTR的作用,来看一道例题, 第一条MOV指令中,目的操作数为存储器操作数,通过间接寻址方式获得,地址由寄存器DI指定,BYTE PTR表明该地址中存储的是字节型数据 指令的作用为将8位立即数0赋给由DI指向的内存单元中存储的字节型数据。 第二条MOV指令中,目的操作数为存储器操作数,地址由寄存器DI指定,WORD PTR表明该地址中存储的是字型数据 指令的作用为将16位立即数0赋给由DI指向的内存单元中存储的字节型数据。 第三条MOV指令中,指令定义不明确,目的操作数的类型无法确定,因为B5H即可代表一个8位立即数,也可代表一个16位的立即数。 此处讲一下指令如何确定是8位操作还是16位操作 很多指令既支持8位操作也支持16位操作,如何确定主要是根据操作数的类型,寄存器是8位还是16位,立即数是8位和16位 * 属性运算符PTR也可用于强制类型转换 例如,如果我们定义了一个字型变量STR1,STR1代表了为该变量的地址,那么一下三条指令中 第一条MOV指令,将STR1指向的字型数据赋给16位寄存器AX,指令合法, 第二条MOV指令,将STR1指向的字型数据赋给8位寄存器AL,指令非法, 第三条MOV指令,尽管变量STR1为字型数据,但在使用时通过属性运算符对其进行了强制转换,表明当前将其作为一个字节型数据使用,指令合法。 * 什么是伪指令?在高级语言编程中,例如C语言,需要对程序中使用的符号、变量和函数等进行定义,并为其分配存储空间,然后才能在程序中使用。 在汇编语言中同样需要完成这些工作,这些工作由伪指令完成。 伪指令在指示性语句中出现,用于定义如何分配存储区,以及对程序中使用的符号、变量、过程等进行定义。 需要注意的是伪指令是由汇编程序(Assembler)执行的指令,伪指令本身不被汇编成机器代码。 * 数据定义伪指令用于对程序中使用的变量进行定义,通过变量定义指明变量的类型和并为其分配内存单元 数据定义伪指令的格式为首先是变量名,为所定义变量的符号地址,然后是数据定义
原创力文档


文档评论(0)