第4章-程序结构习题答案.docx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章-程序结构习题答案.docx》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序结构 习题 答案
- 资源描述:
-
1、4.1 简答题第 4 章 程序结构(1) CPUID 指令返回识别字符串的首字符“G”在哪个寄存器中?EBX 的高 8 位(2) 数据的直接寻址和指令的直接寻址有什么区别?数据的直接寻址给出数据所在的存储器地址,指令的直接寻址给出指令所在的存储器地址。(3) 是什么特点决定了目标地址的相对寻址方式应用最多?指令代码中提供目标地址相对于当前指令指针寄存器EIP 的位移量,使得同一个程序被操作系统安排在不同的存储区时,指令间的位移并没有变化的特点。(4) Jcc 指令能跳转到代码段之外吗? 不能,Jcc 指令采用段内相对寻址方式(5) 什么是奇偶校验?数据通信时,数据的某一位用做传输数据的奇偶校验
2、位,数据中包括校验位在内的“1” 的个数恒为奇数,就是奇校验;恒为偶数,就是偶校验(6) 助记符JZ 和JE 为什么表达同一条指令?两个数相减,差值为 0(JZ)与两个数相等(JE)是一个含义(7) 为什么判断无符号数大小和有符号大小的条件转移指令不同?判断两个无符号数的大小和判断两个有符号数大小关系要利用不同的标志组合。判断有符号数的大小需要组合SF 和 OF 标志,并利用ZF 标志确定相等与否。判断无符号数的高低利用CF 标志,利用ZF 标志确定相等。(8) 双分支结构中两个分支体之间的JMP 指令有什么作用? 用于跳过分支体 2,避免进入分支体 2 而出现错误。(9) 如果循环体的代码量
3、远超过128 个字节,还能用 LOOP 指令实现计数控制循环吗?不能,因为 LOOP 指令的目标地址采用相对短转移,只能在128127 字节之间循环(10) 什么是“先循环、后判断”循环结构?指先执行循环体,然后判断是否继续循环的结构,这种结构通常至少执行一次循环体4.2 判断题(1) 指令指针或者号包括代码段寄存器值的改变将引起程序流程的改变。对(2) 指令的相对寻址都是近转移。对(3) 采用指令的寄存器间接寻址,目标地址来自存储单元。错,(4) JMP 指令对应高级语言的GOTO 语句,所以不能使用错,需要使用(5) 因为条件转移指令Jcc 要利用标志作为条件, 所以也影响标志。错(6)
4、JA 和JG 指令的条件都是“大于”,所以是同一个指令的两个助记符。错,JA 针对无符号数,JG 针对有符号数(7) JC 和 JB 的条件都是CF1,所以是同一条指令。对。无符号小于(JB)必然借位(JC)(8) 控制循环是否结束只能在一次循环结束之后进行错(9) 介绍 loop 指令时,常说它相当于 dec ecx 和 jnz 两条指令。但是考虑对状态标志的影响,它们有差别。Loop 指令不影响标志,而 dec 指令却影响除 cf 之外的其他状态标志。对(10) 若 ECX0,则 LOOP 指令和 JECX 指令都发生转移。对4.3 填空题(1) JMP 指令根据目标地址的转移范围和寻址方
5、式,可以分成4 种类型:段内转移、(),段内转移、()以及段间转移、(),段间转移、()。相对寻址,间接寻址,直接寻址,间接寻址(2) MASM 给短转移、近转移和远转移定义的类型名依次是 、 和 。SHORT,NEAR,FAR(3) 假设在平展存储模型下,EBX1256H,双字变量 TABLE 的偏移地址是 20A1H, 线性地址 32F7H 处存放 3280H,执行指令“JMP EBX” 后 EIP ,执行指令“JMP TABLEEBX”后 EIP 。1256H,3280H(4) “CMP EAX,3721H”指令之后是 JZ 指令,发生转移的条件是 EAX , 此时 ZF 。3721H,
6、1(5) 执行“SHR EBX,4”指令后,JNC 发生转移,说明 EBX 的 D3 。0(6) 在 EDX 等于 0 时转移,可以使用指令“CMP EDX, ”、也可以使用“TEST EDX, ”构成条件,然后使用 JE 指令实现转移。0,EDX(7) 循环结构程序一般由三个部分组成,它们是( )、循环体和 ()部分。循环初始,循环控制(8) JECXZ 指令发生转移的条件是( ),loop 指令不发生转移的条件是( )。Ecx=0, ecx 不等于 0(9) loop 指令进行减 1 计数,实际应用中也常进行加1 计数。针对例4-14 程序,如果删除其中的 loop 指令,则可以使用指令“
7、cmp( ),ecx”和“jb ( ) ”替代。Ebx, jb again(10) 小写字母“e”是英文当中出现频率最高的字母。如果某个英文文档利用例4-16 的异或方法进行简单加密, 统计发现密文中字节数据“8FH”最多, 则高程序采用的字节密码可能是( )0EAh习题 4.4已知 var1、var2、var3 和 var4 是 32 位无符号整数,用汇编语言程序片段实现如下C+语句:解答:var4=(var1*6)/( var2-7)+var3mov eax,var1 mov ebx,6mul ebx ;var1*6mov ebx,var2 sub ebx,7 ;var2-7div ebx
8、;(var1*6)/( var2-7)add eax,var3 ;(var1*6)/( var2-7)+var3 mov var4,eax习题 4.5已知 var1、var2、var3 和 var4 是 32 位有符号整数,用汇编语言程序片段实现如下C+语句:解答:Mov Imul Mov Add Idiv SubMovVar1=(var2*var3)/( var4+8)-47eax,var2 var3 ebx,var4 ebx,8 ebx eax,47var1,eax习题 4.6参看例 4-1,假设 N 小于 90000,这时求和结果只需要 eax 保存,edx 为 0。修改例 4-1 使其
9、可以从键盘输入一个数值 N(用 readuid 子程序),最后显示累加和(用dispuid 子程序)。解答:.dataMsg byte Input a number(090000):,0.code Start:Moveax,offset msg Call readuidCall dispcrlf Movebx,eax Add ebx,1 ImulebxShredx,1Rcreax,1 Call dispuid习题 4.7定义 COUNT(假设为 10)个元素的 32 位数组,输入元素编号(0COUNT-1),利用 DISPHD 子程序输出其地址、利用 DISPSID 子程序输出其值。解答:;数
10、据段count= 10arraydword 0,1,2,3,4,5,6,7,8,9;代码段call readuid;输入 N,小于 10习题 4.10lea eax,arrayeax*4;EAX地址call disphd;显示地址mov eax,arrayeax*4;EAX变量值call dispsid;显示数值判断下列程序段跳转的条件(1)xor ax,1e1eh Je equal(2)test al,10000001b Jnz here(3)cmpcx,64hJbthere答:(1)zf= 1(2)zf= 0 (3) cf =1习题 4.11假设 EBX 和 ESI 存放的是有符号数,ED
11、X 和 EDI 存放的是无符号数,请用比较指令和条件转移指令实现以下判断:(1) 若 EDX EDI ,转到 above 执行(2) 若 EBX ESI ,转到 greater 执行(3) 若 EBX = 0 ,转到 zero 执行(4) 若 EBX - ESI 产生溢出 ,转到 overflow 执行(5) 若 ESI = EBX ,转到 less_eq 执行(6) 若 EDI= EDX ,转到 below_eq 执行答:(1) cmp ebx,edi Ja above(2) cmp ebx,esi Jggreater(3) cmp ebx ,0 Je zero(4) cmp ebx,esi
12、 Jooverflow(5) cmp esi,ebx Jle less_eq(6) cmp edi,edx Jbe below_eq习题 4.12使用“shr eax,2”将 eax 中的 D1 位移入 CF 标志,然后用 JC /JNC 指令替换 JZ /JNZ 指令完成例 4-6 程序的功能。答:mov eax,56h Shr eax,2 jnc nommov eax,offset yes_msg jmp donenom:mov eax,offset no_msg done:call dispmsg或mov eax,58hShr eax,2 jc yesmmov eax,offset no
展开阅读全文