电子科大教材-第三章作业解答_第1页
电子科大教材-第三章作业解答_第2页
电子科大教材-第三章作业解答_第3页
电子科大教材-第三章作业解答_第4页
电子科大教材-第三章作业解答_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上1说明寻址方式(1)ADD AX,0A51H源:立即数寻址目的:寄存器寻址(2)MOV BL,DATA1源:直接寻址(变量作为符号位移量)EA=DATA1目的:寄存器寻址(3)MOV DS,AX源:寄存器寻址目的:寄存器寻址(4)AND AL,VAR1+2源:直接寻址(表达式的计算在汇编阶段完成)EA=VAR1+2目的:寄存器寻址(5)TEST SI,CL源:寄存器寻址目的:寄存器间接寻址EA=(SI)(6)OR ARRYBX,-1源:立即数寻址目的:基址寻址(位移量:ARRY,基址:(BX)EA=ARRY+(BX)(7)SUB DS:01FEH,DX源:寄存器寻址目

2、的:直接寻址(使用数值位移量作为偏移量)EA=01FEH(8)ADC BPDI,BH源:寄存器寻址目的:基址变址寻址(基址:(BP),变址:(DI),位移量:0,0位移量在语法上省略,但在机器指令中是存在的) EA=(BP)+(DI)+0(9)AND CX,-19BXSI源:基址变址寻址注意位移量部分,这里给了一个负数,语法上是允许的,汇编时位移量确定为-19的补码,但是实行寻址时这个补码被解释为无符号数,应该是0EDH。这条指令中给出负数位移量语法上可以通过,但是不符合常规用法。EA的三个分量在做加法时可以解释为补码(一般不这样解释),但是最终形成的EA一定是看作无符号数。EA=0FFEDH

3、+(BX)+(SI) ;(注意,语法上使用负数做位移量,做加法时要使用它的16位补码,不是8位)目的:寄存器寻址(10)PUSH ES源:寄存器寻址目的:目的操作数隐含使用(SP)指向的栈顶字单元(内存中),在机器指令中,其寻址由OPCODE决定,不由寻址方式字段决定,故不需要说明它的寻址方式。由OPCODE决定的寻址统称为隐含寻址。(11)CLC源:无源操作数目的:隐含使用FR的CF标志(寄存器中),由OPCODE决定,为隐含寻址。3求执行两条指令后,各标志位的状态MOV AL,91;执行后,(AL)=91=5BHADD AL,0BAH加法执行如下:(十六进制加法,如果不习惯,也可采用先前的

4、二进制加法)0BAH+05BH115HCF:显然最高位产生了进位(两个加数都是两位的,和却有三位),CF=1AF:低四位向高四位产生了进位(A+B产生进位),AF=1ZF:运算结果不为0,ZF=0SF:运算结果最高位为0(高四位:1H=0001B),SF=0OF:正+正=正(两个加数与和的符号位都为0),没有溢出,OF=04求程序段分别的运行结果(1)MOV CL,20HBXSIEA=20H+(BX)+(SI)=20H+0024H+0012H=0056H默认使用段寄存器DS,段基址:091D0H物理地址:段基址+EA=091D0H+0056H=09226H(09226H)=00F6H,这是以字

5、为单位的内容描述,变成字节:(09226H)=0F6H,(09227H)=00H指令执行后,(CL)=(09226H)=0F6H(2)MOV BPDI,CXEA=0+(BP)+(DI)=0024H+0032H=0056H默认使用段寄存器SS,段基址:1E4A0H物理地址:段基址+EA=1E4A0H+0056H=1E4F6H指令执行完后,(1E4F6H)=(CX)=5678H(3)共两条指令,按顺序逐条分析1)LEA BX,20HBXSIEA=20H+(BX)+(SI)=20H+0024H+0012H=0056H指令执行完后,(BX)=EA =0056H2)MOV AX,2BX注意,此时BX的内

6、容已变,不要再参照初始值,应该始终参照上一条指令的结果EA=2H+(BX)=2H+0056H=0058H默认使用段寄存器DS,段基址为091D0H物理地址=段基址+EA=091D0H+0058H=09228H指令执行完后,(AX)=(09228H)=1E40H(4)1)LDS SI,BXDIEA=0+(BX)+(DI)=0024H+0032H=0056H默认使用段寄存器DS,段基址为091D0H物理地址为:段基址+EA=091D0H+0056H=09226H指令执行完后,(SI)=(09226H)=00F6H (DS)=(09228H)=1E40H2)MOV SI,BX注意,此时SI、DS的内

7、容已变,不要再参照初始值,应该始终参照上一条指令的结果EA=(SI)=00F6H默认使用段寄存器DS,段基址为1E400H物理地址为:1E400H+00F6H=1E4F6H指令执行完后,(1E4F6H)=(BX)=0024H(5)1)XCHG CX,32HBXEA=32H+(BX)=32H+0024H=0056H默认使用段寄存器DS,段基址为091D0H物理地址=091D0H+0056H=09226H执行指令后,(CX)=00F6H (09226H)=5678H2)XCHG 20HBXSI,AXEA=20H+(BX)+(SI)=20H+0024H+0012H=0056H默认使用段寄存器DS,段

8、基址为091D0H物理地址=091D0H+0056H=09226H注意,(09226H)经过上条指令已经发生变化指令执行完后,(09226H)=1234H (AX)=5678H5使用4种不同寻址方式对同一个物理地址进行访问1)MOV AX,BP寄存器间接寻址,默认使用段寄存器SS2)MOV AX,100HDI MOV AX,220HSI变址寻址,默认使用段寄存器DS3)MOV AX,240HBX基址寻址,默认使用段寄存器DS4)MOV AX,2C0H MOV AX,SS:470H直接寻址,第一种使用DS段寄存器6给了一定初始寄存器条件,问执行一段程序后,几个寄存器中应该是什么内容遇到这种题目,

9、应当把所有寄存器列一个表格,每一条指令分析完后,填上新的一行寄存器内容,这样才不容易出错,逐条指令分析,每条指令都使用上条指令执行完后新的寄存器内容。下面我们按照这种思路来分析这段程序。(DS)=1234H,(SI)=124H,(12464H)=30ABH,(12484H)=464H(考试时可以用自己的方式简写寄存器状态,提高速度)1)LEA SI,SI分析:EA=(SI)=124H指令执行完后,(SI)=(SI)=124H(注意LEA指令的功能,不要搞成MOV指令了)引起的寄存器内容变化:无(仅列出当前变化了的,能提高解题速度)2)MOV AX,SI分析:EA=(SI)=124H默认使用DS

10、物理地址=12340H+124H=12464H执行后,寄存器变化为:(AX)=(12464H)=30ABH3)MOV SI+22H,1200H分析:SI+22H=22HSIEA=22H+(SI)=22H+124H=146H默认使用DS物理地址=12340H+146H=12486H执行后,寄存器没有变化,存储单元变化为:(12486H)=1200H4)LDS SI,SI+20H分析:SI+20H=20HSIEA=20H+(SI)=20H+124H=144H默认使用DS物理地址=12340H+144H=12484H当前:(12484H)=464H(12486H)=1200H执行后,变化:(SI)=

11、(12484H)=464H,(DS)=(12486H)=1200H5)ADD AX,SI分析:EA=(SI)=464H默认使用DS物理地址=12000H+464H=12464H执行后,变化:(AX)=(AX)+(12464H)=30ABH+30ABH=6156H7假定了一些寄存器初始内容,问执行一段程序后某些寄存器和标志位的内容。初始:(AX)=0A5C6H,(CX)=0F03H1)STC执行后,CF=12)RCL AX,CL当前(CL)=03H,(AX)=00110B,CF=1执行后:(AX)=10110B=2E36H,CF=1,3)AND AH,CH当前(AH)=02EH=B(CH)= 0

12、FH =B功能为提取低4位,执行后,AH=0EH,CF=0(强制清0)4)RCR AX,CL当前(CL)=03H,CF=0,(AX)=0E36H=10110B,执行后:CF=1,(AX)=00110B=81C6H8初始:(AX)=0FC77H,(CX)=504H1)CLC执行后,CF=02)SAR AX,CL当前(CL)=04H,(AX)=0FC77H=10111B算术右移4位(记得最高位补充符号),执行后(AX)=00111B=0FFC7H,CF=0。3)XCHG CH,CL当前(CH)=05H,(CL)=04H执行后,(CH)=04H,(CL)=05H4)SHL AX,CL当前(CL)=0

13、5H,(AX)=0FFC7H=00111B逻辑左移5位,执行后(AX)=00000B=0F8E0H,CF=110初始:(AX)=0FFFFHINC AX执行后,(AX)=0000HNEG AX执行后,(AX)=0000HDEC AX执行后,(AX)=0FFFFHNEG AX执行后,(AX)=0001H11初始:(BX)=12FFH1)MOV CL,8执行后,(CL)=82)ROL BX,CL循环左移8位,相当于低8位和高8位交换,CF中保存高8位的最低位执行后,(BX)=0FF12H,CF=03)AND BX,0FFH提取低8位,执行后,(BX)=0012H,CF=04)CMP BX,0FFH

14、执行后,(BX)不变,(BX)=0012H因为作为无符号数,0012H<00FFH,所以一定不够减,最高位产生借位,CF=1。被减数不等于减数,运算结果一定不为0,所以ZF=0。13初始:(AX)=0FF60H1)STC执行后,CF=12)MOV DX,96执行后,(DX)= 96 =0060H3)XOR DH,0FFH(DH)每位都被变反,执行后,(DH)=0FFH,特别注意CF=0(逻辑运算把CF强行清0)4)SBB AX,DX当前(AX)=0FF60H,(DX)=0FF60H,CF=0减法完成后(AX)=0,最高位没有产生借位,CF=015编写程序片段(1)说明:SF标志在FR的第7位LAHFOR AH,B;使用置位模板SAHF(2)说明:高低4位互换,即循环移位4位。当然可以采用其它方法。MOV CL,4ROL AL,CL(3)注意:要求不使用ADD和ADC,那么可以考虑使用减法和求相反数结合MOV BX,BNEG BXPUSH APOP CSUB C,BX(4)说明:32位无符号数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论