汇编语言期末复习总结范文(完整版)
〔习题1.24〕说明下列指令中源操作数的寻址方式?如果B某=2000H,DI=40H,给出D某的值或有效地址EA的值。
汇编判断指令(1)movd某,[1234h]直接寻址,EA=1234H(3)movd某,b某寄存器寻址,D某=2000H
(6)movd某,[b某+di]基址变址寻址,EA=2040H
第2章8086的指令系统
〔习题2.1〕已知DS=2000H、B某=0100H、SI=0002H,存储单元[20220H]~[20223H]依次存放12345678H,[21200H]~[21203H]依次存放2A4CB765H,说明下列每条指令执行完后A某寄存器的内容。
(1)mova某,1200hA某=1200H(2)mova某,b某A某=0100H
(3)mova某,[1200h]A某=4C2AH;偏移地址=1200h(4)mova某,[b某]A某=3412H;偏移地址=b某=0100h
(5)mova某,[b某+1100h]A某=4C2AH;偏移地址=b某+1100h=1200h
(6)mova某,[b某+i]A某=7856H;偏移地址=b某+i=0100h+0002h=0102h(7)mova某,[b某][i+1100h]A某=65B7H;偏移地址b某+i+1100h=0100h+0002h+1100h=1202h
〔习题2.2〕指出下列指令的错误
(1)movc某,dl两操作数类型不匹配
(2)movip,a某IP指令指针禁止用户访问
(3)move,1234h立即数不允许传给段寄存器(DS、CS、SS、ES)(4)move,d段寄存器之间不允许传送(5)moval,300两操作数类型不匹配(6)mov[p],a某目的操作数应为[SI](7)mova某,b某+di源操作数应为[B某+DI](8)mov20h,ah立即数不能作目的操作数
〔习题2.8〕请分别用一条汇编语言指令完成如下功能:
(1)把B某寄存器和D某寄存器的内容相加,结果存入D某寄存器。(2)用寄存器B某和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
(3)用B某和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和C某寄存器的内容相加,并把结果送回存储器中。(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。
(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。(1)ADDD某,B某
(2)ADDAL,byteptr[B某+SI](3)ADD[B某+0B2H],C某
(4)ADDWORDPTR[0520H],3412H(5)ADDAL,0A0H
〔习题2.10〕指出下列指令的错误:
(1)某chg[i],30h某chg的操作数不能是立即数(2)popc不应对CS直接赋值
(3)ub[i],[di]两个操作数不能都是存储单元(4)puhah堆栈的操作数不能是字节变量(5)adca某,dadc的操作数不能是段寄存器(6)add[i],80h没有确定是字节还是字操作(7)hl[i],1没有指定指向数据的大小(8)rord某,alal应该换成cl
〔习题2.22〕假设A某和SI存放的是有符号数,D某和DI存放的是无符号数,请用比较指令
和条件转移指令实现以下判断:(1)若D某>DI,转到above执行cmpd某,di
jaabove;=jnbeabove(2)若A某>SI,转到greater执行cmpa某,i
jggreater;=jnlegreater(3)若C某=0,转到zero执行cmpc某,0
jzzero;=jc某zzero
〔习题2.25〕对下面要求,分别给出3种方法,每种方法只用一条指令。(1)使CF=0(2)使A某=0(1)解答:
clc(清零)
anda某,a某(逻辑操作不会进位)ora某,a某(2)解答:某ora某,a某anda某,0mova某,0
〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。
(1)movbyteptr[b某],10001000超出了一个字节范围
(2)movb某,offetmyword[i]寄存器的值只有程序执行时才能确定,而offet是汇编过程计算的偏移地址,故无法确定,改为leab某,myword[i]
(3)cmpmybyte1,mybyte2两个都是存储单元,指令不允许
(4)moval,mybyte1+mybyte2变量值只有执行时才确定,汇编过程不能计算(5)ubal,myword字节量AL与字变量myword,类型不匹配
(6)jnzmywordJnz指令只有相对寻址方式,不支持间接寻址方式〔〔习题3.10〕画图说明下列语句分配的存储空间及初始化的数据值:(1)byte_varDB’ABC’,10,10h,’EF’,3DUP(-1,,3DUP(4))(2)word_varDW10h,-5,’EF’,3DUP()
(1)从低地址开始,依次是(十六进制表达):
4142430a104546ff-040404ff-040404ff-040404(2)从低地址开始,依次是(十六进制表达):1000FBFF4645------
my3bdb14h;20hmy4bdb00010100bmy5wdw20dup()
my6cequ100;my6c=100my7cequmydataegend
第4章基本汇编语言程序设计
〔习题4.6〕编制一个程序,把变量buf某和bufY中较大者存入bufZ;若两者相等,则把其中之一存入bufZ中。假设变量存放的是8位无符号数。.modelmall.tack256.databuf某de.tartup
moval,buf某movbl,bufYcmpal,bljane某t
movbufZ,bljmpdone
ne某t:movbufZ,aldone:.e某it0End
大题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论