微机原理、汇编语言及接口技术教程课后习题答案(2)

2020-04-21 00:23

〔解答〕

lea bx,table mov al,8 xlat

;获取table的首地址,BX=200H ;传送欲转换的数字,AL=8 ;转换为格雷码,AL=12H

〔习题2.11〕

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

mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al

〔解答〕

mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al

;AL=89H ;AL=0AFH ;AL=0AFH ;AL=0FFH ;AL=00H

CF ZF SF OF PF

0 0 0 1 0 1

0 1 1 0 1 0

1 0 0 0 0 0

1 1 1 1 1 1

0 1 0 0

;AL=12H 1

;AL=00H 0

〔习题2.12〕

请分别用一条汇编语言指令完成如下功能:

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

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

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

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

⑸ 把数0A0H与AL寄存器的内容相加,并把结果送回AL中 〔解答〕

⑴ add dx,bx ⑵ add al,[bx+si] ⑶ add [bx+0b2h],cx

⑷ add word ptr [0520h],3412h

6

⑸ add al,0a0h

〔习题2.13〕

设有4个16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。

mov ax,X imul Y mov cx,ax mox bx,dx mov ax,Z cwd

add cx,ax adc bx,dx sub cx,540 sbb bx,0 mov ax,V cwd

sub ax,cx sbb dx,bx idiv X 〔解答〕

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

〔习题2.14〕

给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。

mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h

〔解答〕

mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h

;AX=1470H ;AX=1470H ;AX=1470H ;AX=0000H ;AX=FFFFH ;AX=FFFFH

7

CF ZF SF OF PF 0 0 0 0 0

0 0 1 1 0

0 0 0 0 1

0 0 0 0 0

0 0 1 1 1

〔习题2.15〕

控制转移类指令中有哪三种寻址方式? 〔解答〕

相对寻址、直接寻址、间接寻址(还可以分成寄存器间接、存储器间接)

〔习题2.16〕

假设DS=2000H、BX=1256H、TABLE的偏移地址是20A1H,物理地址232F7H处存放3280H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么?

⑴ JMP BX

⑵ JMP TABLE[BX] 〔解答〕

(1)1256H (2)3280H

〔习题2.17〕

判断下列程序段跳转的条件 ⑴ xor ax,1e1eh je equal

⑵ test al,10000001b jnz there ⑶ cmp cx,64h jb there 〔解答〕

⑴ AX=1e1eh(异或后为0) ⑵ AL的D0或D7至少有一位为1 ⑶ CX(无符号数)< 64h

〔习题2.18〕

如下是一段软件延时程序,请问NOP指令执行了多少次? xor cx,cx delay: nop loop delay 〔解答〕

216次

8

〔习题2.20〕

按照下列要求,编写相应的程序段:

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

⑵ 有两个32位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成DX.AX←buffer1-buffer2功能。

⑶ 编写一个程序段,在DX高4位全为0时,使AX=0;否则使AX=-1。 ⑷ 把DX.AX中的双字右移4位

⑸ 有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出或借位)存于原处。 〔解答〕

(1) mov dl,string[1] mov dh,string[6] (2) mov ax, word ptr buffer1 sub ax, word ptr buffer2 ; 先减低16位 mov dx, word ptr buffer1+2 sbb dx, word ptr buffer2+2 ; 后减高16位,需减低16位的借位 (3) test dx,0f000h jz next mov ax,-1 jmp done next: mov ax,0 done: … (4) mov cx,4

again: shr dx,1 ; 右移一位,移出的低位进入CF标志 rcr ax,1 ; 将CF移进AX高位,同时实现AX右移 loop again ; 循环4次,实现4位右移 (5) mov cx,100 mov bx,0

again: sub array[bx],1 inc bx

9

loop again

10


微机原理、汇编语言及接口技术教程课后习题答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电力系统分析(1)-实验指导书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: