- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
32位汇编习题04
32位汇编语言程序设计 习题解答 32位汇编语言习题解答 课件制作: 钱晓捷 第4章习题:程序结构 4.1 简答题(2、5、6、9、10) 4.2 判断题(2、4、6、7、10) 4.3 填空题(2、3、4、5、6) 4.4、4.7、4.15、4.17、4.27、4.29 4.1 简答题-1 (2)数据的直接寻址和指令的直接寻址有什么区别? 数据的直接寻址给出数据所在的存储器地址,指令的直接寻址给出指令所在的存储器地址。 (5)什么是奇偶校验? 数据通信时,数据的某一位用做传输数据的奇偶校验位,数据中包括校验位在内的“1”的个数恒为奇数,就是奇校验;恒为偶数,就是偶校验 (6)助记符JZ和JE为什么表达同一条指令? 两个数相减,差值为0(JZ)与两个数相等(JE)是一个含义 4.1 简答题-2 (9)如果循环体的代码量远超过128个字节,还能用LOOP指令实现计数控制循环吗? 不能,因为LOOP指令的目标地址采用相对短转移,只能在-128~+127字节之间循环 (10)什么是“先循环、后判断”循环结构? 指先执行循环体,然后判断是否继续循环的结构,这种结构通常至少执行一次循环体 4.2 判断题 2)指令的相对寻址都是近转移。 对 4)JMP指令对应高级语言的GOTO语句,所以不能使用 错,需要使用 6)JA和JG指令的条件都是“大于”,所以是同一个指令的两个助记符。 错,JA针对无符号数,JG针对有符号数 7)JC和JB的条件都是CF=1,所以是同一条指令。 对。无符号小于(JB)必然借位(JC) 10)若ECX=0,则LOOP指令和JECX指令都发生转移。 对 4.3 填空题-1 (2)MASM给短转移、近转移和远转移定义的类型名依次是___、___和___。 SHORT,NEAR,FAR (3)假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是20A1H,线性地址32F7H处存放3280H,执行指令“JMP EBX” 后EIP=_______,执行指令“JMP TABLE[EBX]”后EIP=_______。 1256H,3280H 4.3 填空题-2 (4)“CMP EAX,3721H”指令之后是JZ指令,发生转移的条件是EAX=________,此时ZF=_______。 3721H,1 (5)执行“SHR EBX,4”指令后,JNC发生转移,说明EBX的D3=_____。 0 (6)在EDX等于0时转移,可以使用指令“CMP EDX,____”、也可以使用“TEST EDX,_____”构成条件,然后使用JE指令实现转移。 0,EDX 习题4.4 已知var1、var2、var3和var4是32位无符号整数,用汇编语言程序片段实现如下C++语句: var4=(var1*6)/( var2-7)+var3 mov eax,var1 mov ebx,6 mul ebx ;var1*6 mov ebx,var2 sub ebx,7 ;var2-7 div ebx ;(var1*6)/( var2-7) add eax,var3 ;(var1*6)/( var2-7)+var3 mov var4,eax 习题4.7 定义COUNT(假设为10)个元素的32位数组,输入元素编号(0~COUNT-1),利用DISPHD子程序输出其地址、利用DISPSID子程序输出其值。 ;数据段 count = 10 array dword 0,1,2,3,4,5,6,7,8,9 ;代码段 call readuid ;输入N,小于10 lea eax,array[eax*4] ;EAX=地址 call disphd ;显示地址 mov eax,array[eax*4] ;EAX=变量值 call dispsid ;显示数值 习题4.15-1 IA-32处理器的指令CDQ将EAX符号扩展到EDX。假若没有该指令,编程实现该指令功能。 (1)按照符号扩展的含义编程,即:EAX最高为0,则EDX=0;EAX最高为1,则EDX=FFFFFFFFH。 test eax,8000h ;测试最高位 jz next1 ;最高位为0,转移 mov edx,0ffffffffh ;最高位为1,设置EDX=FFFFFFFFH jmp done ;跳过另一个分支 next1: mov dx,0 ;设置EDX=0 done: 习题4.15-2 编程实现指令CDQ,将EAX符号扩展到EDX (2)使用移位等指令进行优化编程。 方法1: mov edx,eax sar edx,31 方法2: rol eax,1 rcr edx,1 sar edx,31 ror eax,1
文档评论(0)