下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章通用数据处理指令3.1 简答题( 1)如何修改“ MOV ESI, WORD PTR 250 ”语句使其正确?删除“ WORD PTR ”即可( 2)为什么说“ XCHG EDX,CX ”是一条错误的指令?源、目标寄存器位数不同,不能用该指令进行数据交换( 3)说 IA-32 处理器的堆栈“向下生长”是什么意思?入栈时堆栈指针寄存器做减法操作,指向低地址;出栈时堆栈指针寄存器做加法操作,指向高地址(4)都是获取偏移地址, 为什么指令 “ LEA EBX,ESI ”正确,而指令 “ mov ebx,offset ESI ” 就错误?LEA 指令时运行时计算地址,OFFSET 是汇编时取地址
2、。(5)执行了一条加法指令后,发现ZF 1,说明结果是什么?表明运算结果为0( 6) INC 、 DEC 、 NEG 和 NOT 都是单操作数指令,这个操作数应该是源操作数还是目的操作数?既是源操作数,也是目的操作数( 7)大小写字母转换使用了什么规律?大小写字母转换利用它们的ASCII 码相差 20H(9)除法指令“DIV ESI ”的被除数是什么?被除数 64 位,在 EDX 和 EAX 中, EDX 保存高 32 位、 EAX 保存低 32 位( 10)逻辑与运算为什么也称为逻辑乘?运算规则类似于 2 进制乘法。3.2 判断题( 1)指令“ MOV EAX,0 ”使 EAX 结果为 0,
3、所以标志 ZF 1。错, MOV 指令不影响标志( 2)空操作 NOP 指令其实根本没有指令。错,(3)堆栈的操作原则是“先进后出”,所以堆栈段的数据除了PUSH 和 POP 指令外,不允许其他方式读写。错( 4)虽然 ADD 指令和 SUB 指令执行后会影响标志状态,但执行前的标志并不影响它们的执行结果。对(5) 80 减 90( 8090)需要借位,所以执行结束后,进位标志CF 1。对,减法时借位也用CF 标志反映( 6)指令“ INC ECX ”和“ ADD ECX,1 ”实现的功能完全一样,可以互相替换。错, INC 不影响 CF 位。( 7)无符号数在前面加零扩展,数值不变;有符号数
4、前面进行符号扩展,位数加长一位、数值增加一倍。错,符号扩展也不改变数值大小(8) CMP 指令是目的操作数减去源操作数,与SUB 指令功能相同错(9)逻辑运算没有进位或溢出问题,此时CF 和 OF 没有作用,所以逻辑运算指令将CF 和OF 设置为 0错( 10) SHL 指令左移一位,就是乘 10。错,左移一位,相当于乘 2。这里的位是二进制比特位3.3 填空题(1)指令“ PUSHDS”执行后, ESP 会 _.减 2(2)指令“ POP EDX ”的功能也可以用MOV 和 ADD 指令实现,依次应该是_和_ 指令。MOV EDX,ESP ,ADD ESP,4( 3)例子 3-3 的 TAB
5、 定义如果是 1234567890,则显示结果是 _78894111( 4)进行 8 位二进制数加法: BAH 6CH ,8 位结果是 _,标志 PF _ 。如果进行16 位二进制数加法:45BAH 786CH , 16 位结果是 _ ,标志PF _。26H, 0, BE26H , 0( 5)已知 AX 98H,执行“ NEG AX ”指令后, AX _,标志 SF_。68H,0( 6)假设 CL=98H ,执行“ MOVZX DX,CL ”后, DX = _ ,这称为 _。0098h,零位( 7)假设 CL=98H ,执行“ MOVSX DX,CL ”后, DX = _ ,这称为 _。ff9
6、8h, 符号( 8)指令“ XOR EAX, EAX ”和“ SUB EAX, EAX ”执行后, EAX _, CF OF _。而指令“ MOV EAX, 0 ”执行后, EAX _,CF 和 OF 没有变化。0, 0,0(9)例子 3-9 的程序执行结束后,变量qvar 的内容是 _0123456788765432( 10)欲将 EDX 内的无符号数除以 16,使用指令“ SHR EDX, _ ”,其中后一个操作数是一个立即数。4习题 3.4请给每种组合各举一个实例( 1) mov reg, imm( 2) mov mem, imm( 3) mov reg, reg( 4) mov mem
7、, reg( 5) mov seg, reg( 6) mov reg, mem( 7) mov seg, mem( 8) mov reg, seg( 9) mov mem, seg习题 3.5操作数的组合通常符合逻辑,但是不能任意,指出下列指令的错误原因(1) mov ecx,dl位数不同(2)mov eip,axeip 为专用寄存器(3)mov es,1234h段寄存器不能直接用imm 赋值(4)mov es,ds段寄存器间不能相互赋值(5)mov al,300h位数不同(6)mov esi,45h类型不明确(7)mov eax,ebx+edi无该种寻址方式(8) mov 20h,al立即数
8、不能做操作数习题 3.6使用 MOV解答:指令实现交换指令“XCHG EBX,EDI”功能。mov eax,ebxmov ebx,edimov edi,eax习题3.7什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应指令是什么。主存储器中的以“先进后出”规则访问的内存区,入栈、出栈,push ,pop习题 3.11执行如下程序片断,说明每条指令的执行结果( 1)mov eax,80hadd eax,3add eax,80hadc eax,3( 2)mov eax,100add ax,200( 3)mov eax,100add al,200(包含 256 的进位含义:256 44 30
9、0)(4)mov al,7fhsub al,8sub al,80hsbb al,3解答:(1)mov eax,80h;EAX 80Hadd eax,3 ;EAX 83H,CF 0, SF0add eax,80h;EAX 103H , CF 0, OF0adc eax,3 ;EAX 106H ,CF 0, ZF 0( 2)mov eax,100;EAX 100( 64H)add ax,200;EAX 300( 12CH ), CF 0( 3)mov eax,100;EAX 100( 64H)add al,200;EAX 44( 2CH ), CF 1(包含 256 的进位含义:256 44 30
10、0)(4)mov al,7fh;AL 7FHsub al,8;AL 77H, CF 0, SF 0sub al,80h;AL F7H , CF1, OF 1sbb al,3;AL F3H , CF 0, ZF 0习题 3.12给出下列各条指令执行后al 的值,以及CF、 ZF、 SF、 OF 和 PF 的状态。Moval,89hAddal,alAddal,9dhCmpal,0bchSubal,alDecalIncal解答:Moval,89h;89h,不影响标志位Addal,al;12h,cf=1,zf=0,sf=0,of=1,pf=1Addal,9dh;0afh,cf=0,zf=0,sf=1,
11、of=0,pf=1Cmpal,0bch;0afh,cf=1,zf=0,sf=1,of=0,pf=1Subal,al;0,cf=0,zf=1,sf=0,of=0,pf=1Decal;ffh,cf=0,zf=0,sf=1,of=0,pf=1Incal;0h,cf=0,zf=1,sf=0,of=0,pf=1习题 3.13如下两段程序执行后,EDX.EAX寄存器对的值各是多少?(1)加法程序MovMovAddAdcedx,11heax,0b0000000heax,040000000hedx,0(2)减法程序MovMovSubSbbedx,100heax,64000000heax,84000000hed
12、x,0解答:(1)EDX=11EAX=0f0000000h(2)0ffh,0e00000000h习题 3.14请分别用一条汇编语言指令完成如下功能:(1)把 EBX 寄存器和EDX 寄存器的内容相加,结果存入EDX 寄存器。(2)用寄存器EBX 和 ESI 的基址变址寻址方式把存储器的一个字节与AL 寄存器的内容相加,并把结果送到AL 中。(3)用 EBX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个双字和ECX 寄存器的内容相加,并把结果送回存储器中。(4)将 32 位变量 VARD 与数 3412H 相加,并把结果送回该存储单元中。(5)把数 0A0H 与 EAX 寄存器的内容相
13、加,并把结果送回EAX 中。解答:(1)把 EBX 寄存器和EDX 寄存器的内容相加,结果存入EDX 寄存器。add edx,ebx(2)用寄存器EBX 和 ESI 的基址变址寻址方式把存储器的一个字节与AL 寄存器的内容相加,并把结果送到AL 中。add al,ebx+esi(3)用 EBX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个双字和ECX 寄存器的内容相加,并把结果送回存储器中。add bx+0b2h,cx(4)将 32 位变量 VARD 与数 3412H 相加,并把结果送回该存储单元中。add varw,3412h(5)把数 0A0H 与 EAX 寄存器的内容相加,并把
14、结果送回EAX 中。add eax,0a0h习题 3.15有两个 64 位无符号整数分别存放在变量buffer1 和 buffer2 中,定义数据并编写代码完成 edx.eax<- buufer1 - buffer2 的功能。解答:.dataBuffer1qword?Buffer2qword?.codeMoveax,dword ptr buffer1Movedx,dword ptr buffer2 + 4Addeax,dword ptr buffer2Adcedx,dword ptr buffer2 + 4习题 3.16执行如下程序片断,说明每条指令的执行结果(1)mov esi,100
15、11100b ;ESI _Hand esi,80h;ESI _Hor esi,7fh;ESI _Hxor esi,0feh;ESI _H(2)mov eax,1010b;EAX _B(可有前导0)shr eax,2;EAX _B, CF _shl eax,1;EAX _B, CF _and eax,3;EAX _B, CF _(3)mov eax,1011b;EAX _B(可有前导0)rol eax,2;EAX _B, CF _rcr eax,1;EAX _B, CF _or eax,3;EAX _B, CF _(4)xor eax,eax;EAX _, CF _, OF _;ZF _, SF
16、 _, PF_解答:(1)mov esi,10011100b;ESI 9CHand esi,80h;ESI 80Hor esi,7fh;ESI FFHxor esi,0feh;ESI 01H(2)mov eax,1010b;EAX 1010B (可有前导0)shr eax,2;EAX 0010B , CF 1shl eax,1;EAX 0100B , CF 0and eax,3;EAX 0000B , CF 0(3)mov eax,1011b;EAX 1011B(可有前导0)rol eax,2;EAX 101100B , CF 0rcr eax,1;EAX 10110B, CF 0or eax
17、,3;EAX 10111B,CF 0(4)xor eax,eax;EAX 0, CF 0,OF 0;ZF 1, SF 0, PF 1习题 3.17给出下列各条指令执行后ax 的结果,以及状态标志CF、 OF、 SF、 ZF 、 PF 的状态。Mov ax,1470hAnd ax,axOrax,axXorax,axNotaxTestax,0f0f0h解答:Ax=1470hflags 不变Ax=1470hcf=of=0 sf=0 zf=0 pf=0Ax=1470hcf=of=0 sf=0 zf=0 pf=0Ax=0cf=of=0 sf=0 zf=1 pf=1Ax=ffffhflags 不变Ax=f
18、fffhcf=of=0 sf=1 zf=0 pf=1习题 3.18举例说明逻辑运算指令怎样实现复位、置位和求反功能。解答:复位 使用逻辑与指令and ,例如将 al 寄存器D0 位复位,指令and al,0feh置位 使用逻辑或指令or ,例如将 al 寄存器D0 位置位,指令or al,01求反 使用 not 指令,例如将ebx 寄存器内容求反,指令 not ebx习题 3.19编程将一个压缩 BCD 码变量(如 92h)转换为对应的 ASCII 码,然后调用 dispc 字程序(在输入输出字程序中)显示。解答:.dataBcd1byte92hMoval,bcd1Shral,4Oral,30
19、hCalldispcMoval,bcd1Andal,0fhOral,30hCalldispc习题 3.20有 4 个 32 位有符号数,分别保存在 var1,var2,var3,var4 变量中,阅读如下程序片段,得出运算公式,并说明运算结果存于何处。Mov eax,var1Imul var2Mov ebx,var3Mov ecx,ebxSarecx,32Add eax,ebxAdcedx,ecxSubeax,540Sbbedx,0Idivvar4解答:(var1*var2)+var3-540)/var4, 结果存于edx,eax 中习题 3.21如下程序片段实现EAX 乘以某个数X 的功能,
20、请判断X ?请使用一条乘法指令实现上述功能。mov ecx, eaxshleax, 3leaeax, eax+eax*8subeax, ecx解答:8*8+8-1 71imuleax, 71习题 3.22请使用移位和加减法指令编写一个程序片段计算:EAX × 21,假设乘积不超过32 位。420提示: 212 2 2 。解答:mov ebx,eax;EBX EAX×20shl ebx,2 ;EBX EAX × 22add eax,ebx;EAX EAX×(22 20)shl ebx,2 ;EBX EAX × 24add eax,ebx;EAX
21、EAX×(24 22 20)习题 3.23阅读如下程序, 为每条指令添加注释, 指出其功能或作用, 并说明这个程序运行后显示的结果。如果将程序中的寄存器间接寻址替换为寄存器相对寻址,如何修改程序?.dataNum byte 6,7,7,8,3,0,0,0Tabbyte 67783000.codeMov ecx,lengthof num;Mov esi,offset num;Mov edi,offset tab;Again:Mov al,esi;Xchgal,edi;Mov esi,al;Call dispcAdd esi,1;Add edi,1;Loopagain解答:.dataNu
22、m byte 6,7,7,8,3,0,0,0Tabbyte 67783000.codeMov ecx,lengthof num;ecx 赋值为 num 数组长度Mov esi,offset num;esi 赋值为 num 偏移地址Mov edi,offset tab;edi 赋值为 tab 字符串偏移地址Again:Mov al,esi;读取 num 元素到 a1Xchgal,edi;互换 al 与 tab 元素Mov esi,al;al 存入 num 数组相应单元Call dispcAdd esi,1;指向 num 下一元素Add edi,1;指向下一字符Loopagain结果: 67783000修改程序 :Mov ecx,lengt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国运动医学设备技术创新与临床应用前景展望报告
- 2026中国太阳能综合系统行业市场现状分析及投资评估规划分析研究报告
- 2026中国银发经济产业养老产品市场分析投资
- 2026软件开发行业市场深度调研及发展趋势研究报告
- 2026中国智能建筑行业市场现状与投资机会分析报告
- 2024年12月主任医师考试呼吸内科支气管扩张症康复应试技巧专练及答案
- 2026中国消费级无人机海外市场拓展面临的合规障碍研究报告
- 2026汽车制造产业供需分析及前景预测与经营战略研究报告
- 2026中国音响设备行业市场深度调研及发展趋势与投资前景分析报告
- 2026瑞士苏黎世超精密加工机床市场供需高端化趋势分析及中欧高端装备制造协同发展研究
- 2025年职业技能鉴定-眼镜验光员-眼镜验光员三级(高级工)历年参考题库含答案解析(5套)
- 内蒙古自治区矿山地质环境治理工程预算定额标准
- 山西焦煤职称管理办法
- 直肠癌磁共振影像诊断
- 高考冲刺倒计时100天主题班会
- GB/T 45352-2025鸡精调味料质量通则
- 注安2024注册安全工程师【法规】核心母题600题
- 水平定向钻导向仪工作仪原理及使用
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 【年产180万吨大方坯连铸车间设计探究11000字(论文)】
- 全自动切菜机毕业设计
评论
0/150
提交评论