汇编语言程序设计 习题2:微处理器指令系统学习资料_第1页
汇编语言程序设计 习题2:微处理器指令系统学习资料_第2页
汇编语言程序设计 习题2:微处理器指令系统学习资料_第3页
汇编语言程序设计 习题2:微处理器指令系统学习资料_第4页
全文预览已结束

下载本文档

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

文档简介

PAGEPAGE1第2章微处理器指令系统(习题2)2.8问题:已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12H、34H、56H、78H,[21200H]~[21203H]依次存放2AH、4CH、B7H、65H,说明下列每条指令执行完后AX寄存器的内容,以及源操作数的寻址方式?解答:⑴movax,1200h ;AX=1200H,立即数寻址⑵movax,bx ;AX=0100H,寄存器寻址⑶movax,[1200h] ;AX=4C2AH,直接寻址⑷movax,[bx] ;AX=3412H,寄存器间接寻址⑸movax,[bx+1100h];AX=4C2AH,寄存器相对寻址⑹movax,[bx+si] ;AX=7856H,基址变址寻址⑺movax,[bx][si+1100h];AX=65B7H,相对基址变址寻址2.11问题:给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:解答:moval,89h ;AL=89H CF ZF SF OF PFaddal,al ;AL=12H 1 0 0 1 1addal,9dh ;AL=0AFH0 0 10 1cmpal,0bch ;AL=0AFH1 0 1 0 1subal,al ;AL=00H0 1 0 0 1decal ;AL=0FFH0 0 1 0 1incal ;AL=00H0 1 0 0 12.12问题:请分别用一条汇编语言指令完成如下功能:解答:⑴把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器 adddx,bx⑵用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中 addal,[bx+si]⑶用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中 add[bx+0b2h],cx⑷用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中 addwordptr[0520h],3412h⑸把数0A0H与AL寄存器的内容相加,并把结果送回AL中 addal,0a0h2.14问题:给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。解答:movax,1470h ;AX=1470H CF ZF SF OF PFandax,ax ;AX=1470H 0 0 0 0 0orax,ax ;AX=1470H 0 0 0 0 0xorax,ax ;AX=0000H 0 1 0 0 1notax ;AX=FFFFH 0 1 0 0 1testax,0f0f0h习题2.17问题:判断下列程序段跳转的条件解答: ⑴ xorax,1e1eh jeequal ;AX=1e1eh(异或后为0) ⑵ testal,10000001b jnzthere ;AL的D0或D7至少有一位为1 ⑶ cmpcx,64h jbthere ;CX(无符号数)<64h2.20问题:按照下列要求,编写相应的程序段。解答:⑴起始地址为string的主存单元中存放有一个字符串(长度大于6),把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。 movdl,string[0] movdh,string[5]⑵有两个32位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成DX.AX←buffer1-buffer2功能。 movax,wordptrbuffer1 subax,wordptrbuffer2 ;先减低16位 movdx,wordptrbuffer1+2 sbbdx,wordptrbuffer2+2 ;后减高16位,需减低16位的借位⑶编写一个程序段,在DX高4位全为0时,使AX=0;否则使AX=-1。 testdx,0f000h jznext movax,-1 jmpdonenext: movax,0done: …⑷把DX.AX中的双字右移4位答: movcx,4again: shrdx,1 ;右移一位,移出的低位进入CF标志 rcrax,1 ;将CF移进AX高位,同时实现AX右移 loopagain ;循环4次,实现4位右移⑸有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出或借位)存于原处。 movcx,100 movbx,0again: subarray[bx],1 incbx loopagain习题2.3解答:参考教材第2.1.3节(第23页)习题2.5-1问题:什么是8088中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB最多能分成多少个逻辑段?解答:物理地址:物理存储单元具有的一个唯一的20位编号逻辑地址:在8088内部和用户编程时,所采用的“段地址:偏移地址”形式将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地址1MB最多能分成1MB÷16B=220÷24=216个逻辑段

温馨提示

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

评论

0/150

提交评论