刘臣奇主编-汇编语言程序设计-课外练习题参考答案 下载本文

11.设(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。求下列每条指令源操作数的存储单元地址。

=21234H MOV AX,[1234H]

MOV

MOV MOV

AX,[BX]

AX,TABLE[BX] AX,[BP]

=20100H =2010AH =10010H =10012H

MOV AX,[BP][SI]

12.已知:BX=1234H,BP=5678H,SI=1357H,DS=0925H,SS=0468H,CS=4B10H,指出下述指令中存储器操作数的有效地址和实际地址。

①MOV AL, [BX] ②MOV AH, [BP] ③MOV BH, CS:[SI] ④MOV DL, [SI+10H] ⑤MOV CH, [BP+20H] ⑥MOV CL, SS:[SI+50H] 有效地址 实际地址 1234H 5678H 1357H 1367H 5698H 13A7H 0A484H 0ACF8H 4C457H 0A5B7H 09D18H 05A27H 0E8F8H 0B07FH 0B79BH 4D68BH ⑦MOV BL, DS:[BP+30H] 56A8H ⑧MOV [BP+SI+30H],AH 68DCH ⑨MOV [BX+SI-40H],AH ⑩MOV CS:[BX+SI],DH 254BH 258BH 13.有两个16位字1EE5H和2A3CH分别存放在80x86微机存储器的000B0H和000B3H单元

中。请用图表示出它们在存储器里的存放情况。

地址 内容 000B0H E5H 000B1H 1EH 000B2H 000B3H 3CH 000B4H 2AH 14.有关寄存器及存储单元的内容如下:

DS=2000H,BX=0100H,SI=0002H,存储单元的内容见习题14示意图。试说明下列各条指令执行后AX寄存器的内容。

①MOV AX,1200H ②MOV AX,BX ③MOV AX,[1200H] ④MOV AX,[BX] ⑤MOV AX,1100[BX] ⑥MOV AX,[BX][SI] ⑦MOV AX,1100[BX][SI]

=1200H =0100H =4C2AH =3412H =4C2AH =7856H =65B7H

地址 20100 20101 20102 20103 ┆ 21200 21201 21202 21203 内容 12H 34H 56H 78H ┆ 2AH 4CH 0B7H 65H 习题14示意图 第三章课外练习题

一、单项选择题:

1.以下语句汇编后,CENTH的值是( A )。

BUF1 DW 8,19

BUF2 DB

6,'ABC$',10 DUP('5')

(D)17

CENTH EQU BUF2—BUF1 (A)4 (B)8 (C)14

2.在DEBUG环境下查看机器指令使用( B )命令;显示内存数据使用( E )命令。 (A)G (B)U (C)T (D)A (E)D (F)E (G)R 二、填空题:

1.写出下列各语句在存储器中分别为变量分配多少字节,并填入括号内。 DATA

SEGMENT

20

( 2

‘31H,32H,33H’ 10H

( 11 )

( 0 ) ( 10H )

NUM1 DW NUM2 DB NUM3 EQU

NUM4 DB NUM3 DUP(0) DATA ENDS

2.某程序的数据段定义如下: DATASG SEGMENT

PARTLIST DB‘PART#’

DB 60

DB ‘PRICE’ DB 0125

DB ‘DESCRIPTION’ DB ‘RADIO’

LISTLENG EQU ($-PARTLIST) ;数组长度,用表达式表示 DATASG ENDS

3.有符号定义语句如下: BUFF DB 1,2,3,‘123’ EBUFF DB 0

L EQU EBUFF - BUFF 问L的值是( 6 )。

4.下边是汇编语言程序上机步骤,请填写出完成各步骤使用的系统程序的文件名字,并按照正确步骤给出操作顺序号。

操作名称 文件名

操作顺序

汇编 ( MASM ) ( 2 ) 编辑 ( EDIT ) ( 1 ) 连接 ( LINK ) ( 3 )

调试 ( DEBUG ) ( 4 )

5.自内存0F00:0006开始的内存单元中存放着80 32 56 98 76 B5这六个十六进制数据,试分别写出0F00:0008的字节型数据,字型数据、双字型数据的值。

字节型: ( 56

字型: ( 9856 )

双字型: ( B5769856 )

6.对于如下所示的数据定义,各指令语句的执行结果是什么(以十六进制数表示)?

VR1 VR2 ① ② ③

DB DW

-38,'456',? 6,5 DUP(2)

( -38 )

MOV AL, VR1

ADD VR2,59 ( 65 ) MOV BL,VR1+2 ( 53 )

7.对于第6小题,为VR1变量分配了( 5 )个字节,为VR2变量分配了( 12 )个字节。 8.汇编源程序的文件扩展名是( . ASM )。 9.以下语句汇编后,COUNT的值是( 9 )。

BUF1 DB 3,5,'ABCD$'

BUF2 DW 0FABH COUNT EQU $-BUF1

10.保存当前栈顶地址的寄存器是( SP )。

11.在程序运行时执行的语句是( 指令 )语句,它告诉CPU要执行的操作。 12.( 伪指令 )语句是由汇编程序在汇编过程中执行的语句。

三、判断题(判断每题正误,正确的在题后括号内划 “√”,错误的划“×”)

1.汇编语言是用指令的助记符、符号地址、标号等符号书写程序的语言。 (√)

2.通过ASSUME伪指令给段寄存器赋初值。

(×) (√) (×) (√)

3.在汇编语言中当缺省为十进制数时,表示十六进制数要用H结尾。 4.在DEBUG中,缺省值为十进制数。 5.在标志IF=0时,CPU忽略所有的中断请求。 四、简答

1.标号具有哪3种属性?该3种属性的属性值分别表示什么?

答:标号具有三种属性:段、偏移和类型属性。

①段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。段属性值可以用SEG算符求得。

②偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。标号偏移量属性值可由OFFSET算符求得。

③类型属性:类型属性用来指出该标号是在本段内引用还是在其他段中引用的。标号类型值可用TYPE算符求得。

第四章课外练习题

一、单项选择题:

1.若栈顶的物理地址为20100H,当执行完指令PUSH AX后,栈顶的物理地址为( D )。

(A)20102H (B)20101H (C)200FFH (D)200FEH 2.下列指令执行后,DAB中第一个字的内容是(B)。

DAB DB 0FAH,0DAH,0F5H,0D0H,5H

DAB_L EQU

MOV (A) 05DAH

$-DAB AL,DAB_L

(B) 0DA05H

(C) 0F5DAH

(D) 0DAF5H

XCHG DAB,AL

3.执行下列指令后,正确的结果是(B)。

MOV AL, 100

MOV BL, -2

(A)AL=100H,BL=02H (C)AL=64H,BL=82H

(B)AL=64H,BL=0FEH (D)AL=100H,BL=0FEH

4.完成同指令XCHG AX,BX相同功能的指令或指令序列是(D)。

(A)MOV AX,BX (B) MOV BX,AX

(C)PUSH AX

POP BX

(D)

MOV CX,AX

MOV AX,BX

MOV BX,CX

5.为了使MOV AX,VAR指令执行后,AX寄存器中的内容为4142H,下面哪一条数据定义会产生不正确的结果?(C)

(A)VAR DW 4142H

(B)

VARDW 16706

(C)VAR DB 42H,41H (D) VAR DW ‘AB’ 6.假定用伪指令DATA DB 12H,34H定义了两个字节数据,现需要将数据12H取入寄存器AL,将数据34H取入寄存器AH,能完成此功能的程序段是(D)。

(A) MOV AX,DATA (B) MOV SI,DATA

MOV AX,[SI]

(C)

LEA SI,DATA MOV MOV

(D)

MOV SI,OFFSET DATA MOV AL,[SI] MOV AH,[SI+1]

AX,[SI] AH,[SI]

7.POP指令的操作数不能是( D )。

(A)BP (B)[BX]

二、简答题

(C)字变量的SUM (D)CS

1.设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令序列,要求使用以下几种寻址方式:

①直接寻址;

(MOV AX,ARRAY+8)

②寄存器间接寻址; (LEA BX,ARRAY+8和MOV AX,[BX]) ③变址寻址; (MOV SI,8和MOV AX,ARRAY[SI]) ④基址变址寻址。

(LEA BX,ARRAY及MOV SI,8和MOV AX,[BX][SI])