期中复习提纲.docx

上传人:b****2 文档编号:1419308 上传时间:2022-10-22 格式:DOCX 页数:20 大小:24.98KB
下载 相关 举报
期中复习提纲.docx_第1页
第1页 / 共20页
期中复习提纲.docx_第2页
第2页 / 共20页
期中复习提纲.docx_第3页
第3页 / 共20页
期中复习提纲.docx_第4页
第4页 / 共20页
期中复习提纲.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

期中复习提纲.docx

《期中复习提纲.docx》由会员分享,可在线阅读,更多相关《期中复习提纲.docx(20页珍藏版)》请在冰豆网上搜索。

期中复习提纲.docx

〔习题1.19〕什么是8086中的逻辑地址和物理地址?

逻辑地址如何转换成物理地址?

请将如下逻辑地址用物

理地址表达:

(1)FFFFh:

(2)40h:

17h (3)2000h:

4500h (4)B821h:

4567h

〔解答〕

在8086处理器中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H~FFFFFH。

在8086内部和用户编程时,采用的段基地址:

段内偏移地址形式称为逻辑地址。

将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地

如下逻辑地址用物理地址表达:

(1)FFFFh:

0=FFFF0H

(2)40h:

17h=00417H

(3)2000h:

4500h=24500H

(4)B821h:

4567h=BC777H     (不要算错)

〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4CB765H,说明下列每条指令执行完后AX寄存器的内容。

(1)movax,1200h

(2)movax,bx

(3)movax,[1200h]

(4)movax,[bx]

(5)movax,[bx+1100h]

(6)movax,[bx+si]

(7)movax,[bx][si+1100h]

〔解答〕

(1)AX=1200H

(2)AX=0100H

(3)AX=4C2AH  ;偏移地址=bx=0100h

(4)AX=3412H   ;偏移地址=bx=0100h

(5)AX=4C2AH  ;偏移地址=bx+1100h=1200h

(6)AX=7856H   ;偏移地址=bx+si=0100h+0002h=0102h

(7)AX=65B7H   ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h

 

〔习题2.2〕指出下列指令的错误

(1)movcx,dl

(2)movip,ax

(3)moves,1234h

(4)moves,ds

(5)moval,300

(6)mov[sp],ax

(7)movax,bx+di

(8)mov20h,ah

〔解答〕

(1)两操作数类型不匹配

(2)IP指令指针禁止用户访问

(3)立即数不允许传给段寄存器

(4)段寄存器之间不允许传送

(5)两操作数类型不匹配

(6)目的操作数应为[SI]

(7)源操作数应为[BX+DI] 

(8)立即数不能作目的操作数

〔习题2.6〕给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:

          moval,89h

          addal,al

          addal,9dh

          cmpal,0bch

          subal,al

          decal

          incal

〔解答〕

moval,89h          ;AL=89h  CF ZF SF OF PF

addal,al              ;AL=12h  1  0  0  1  1

;10001001

+10001001

100010010

 

addal,9dh             ;AL=0afh 0  0  1  0  1

;00010010

+10011101

 10101111

 

cmpal,0bch         ;AL=0afh 1  0  1  0  1

;10101111

-10111100

*01000011

 

subal,al              ;AL=00h  0  1  0  0  1

 

decal                  ;AL=0ffh 0  0  1  0  1

;00000000

-00000001

 *11111111

 

incal                   ;AL=00h  0  1  0  0  1

;11111111

+00000001

*11111111

〔习题2.8〕请分别用一条汇编语言指令完成如下功能:

(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。

(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中

(3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回

存储器中。

(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。

(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。

〔解答〕

(1)ADDDX,BX

(2)ADDAL,[BX+SI]

(3)ADD[BX+0B2H],CX

(4)ADDWORDPTR[0520H],3412H

(5)ADDAL,0A0H

〔习题2.9〕设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它

的运算公式,并说明运算结果存于何处。

          movax,X    ;ax=X

          imulY      ;DX.AX=X*Y

 

          movcx,ax   ;cx=X*Y的低16位

          moxbx,dx   ;bx=X*Y的高16位

 

          movax,Z     ;ax=Z

          cwd

          addcx,ax   ;cx=Z的低16位+X*Y的低16位

          adcbx,dx   ;bx=Z的高16位+X*Y的高16位+低位进位

 

          subcx,540  ;cx=Z的低16位+X*Y的低16位-540

          sbbbx,0      ;bx=Z的高16位+X*Y的高16位+低位进位-低位借位

 

          movax,V     ;ax=V

          cwd

          subax,cx    ;ax=V的低16位-(Z的低16位+X*Y的低16位-540)

         sbbdx,bx    ;dx=V的高16位-(Z的高16位+X*Y的高16位+低位进位-低位借位)-低位借位

 

         idivX;/X

〔解答〕

      [V-(X*Y+Z-540)]/X

      AX存商,DX存余数

〔习题2.22〕判断下列程序段跳转的条件

          

(1)xorax,1e1eh

                      jeequal

          

(2)testal,10000001b

                    jnzthere

          (3)cmpcx,64h

                    jbthere

〔解答〕

(1)AX=1e1eh(异或后为0)

(2)AL的D0或D7至少有一位为1

(3)CX(无符号数)<64h

〔习题2.23〕设置CX=0,则LOOP指令将循环多少次?

例如:

            movcx,0

delay:

  loopdelay

〔解答〕

  216次。

〔习题2.25〕有一个首地址为array的20个字的数组,说明下列程序段的功能。

          movcx,20

          movax,0

          movsi,ax

sum_loop:

 addax,array[si]

          addsi,2

          loopsum_loop

          movtotal,ax

〔解答〕

将首地址为array得20个字的数组求和,并将结果存入total单元中。

〔习题2.26〕按照下列要求,编写相应的程序段:

(1)起始地址为string的主存单元中存放有一个字符串(长度大于6),把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。

(2)从主存buffer开始的4个字节中保存了4个非压缩BCD码,现按低(高)地址对低(高)位的原则,将它们合并到DX中。

(3)编写一个程序段,在DX高4位全为0时,使AX=0;否则使AX=-1。

(4)有两个64位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成buffer1

-buffer2功能。

(5)假设从B800h:

0开始存放有100个16位无符号数,编程求它们的和,并把32位的和保存在DX.AX中。

(6)已知字符串string包含有32KB内容,将其中的’$’符号替换成空格。

(7)有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出)存于原处。

(8)统计以’$’结尾的字符串srting的字符个数。

〔解答〕

(1)解答:

          movsi,0

          movdl,string[si]  ;第1个字符送dl寄存器:

movdl,stirng[0]

          movsi,5

          movdh,string[si]  ;第6个字符送dh寄存器:

movdl,stirng[5]

(2)解答:

          xorsi,si          ;si清零

          moval,buffer[si]  ;第一字节

          incsi

          movah,buffer[si]  ;第二字节

          movcl,4

          shlah,cl            ;BCD码移到高半字节

          oral,ah             ;组合成压缩BCD码

          movdl,al                  ;存入dl寄..

          incsi

          moval,buffer[si]  ;第三字节

          incsi

          movah,buffer[si]  ;第四字节

          movcl,4

          shlah,cl            ;BCD码移到高半字节

          oral,ah             ;组合成压缩BCD码

          movdh,al            ;存入dh寄..

(3)解答:

          testdx,0f000h       ;testdh,0f0h

          jznext   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1