汇编语言课后习题及答案 按章节 超全面 - 范文中心

汇编语言课后习题及答案 按章节 超全面

08/17

`00第一章课外练习题

一、单项选择题:

1.从键盘输入的字符,在计算机内存储的是它的( A )

(A)二进制编码 (B)四进制编码 (C)八进制编码(D)十六进制编码

2.6位无符号二进制数能表示的最大十进制数是( B )。

(A) 64 (B) 63 (C) 32 (D) 31

3.十进制数269变换为十六进制数是( C )。

(A)10B (B)10C (C)10D (D)10E

4.8位的微型计算机系统是以16位来表示地址,则该微机系统有( C )个地址空间。

(A)255 (B)65535 (C)65536 (D)1048576

5.8位有符号二进制数能表示的最大十进制数是( D )。

(A)256 (B)255 (C)128 (D)127

6.十六进制数88H,可表示成下面几种形式,请找出错误的表示( D )。

(A)无符号十进制数136 (B)带符号十进制数-120

(C)压缩型BCD十进制数88 (D)8位二进制数-8的补码表示

7.有一个数值152,它与十六进制数6A相等,那么该数值是( B )。

(A)二进制数 (B)八进制数 (C)十进制数 (D)四进制数

8.7位ASCII总共可表示( C )个符号。

(A)256 (B)127 (C)128 (D)255

9.4B的字长是( C )。

(A)8位 (B)16位 (C)32位 (D)64位

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

1.字节通常用英文单词“Bit”来表示 (×)。

2.目前广泛使用的Pentium计算机其字长为5个字节 (×)。

3.存储器中将8个相邻的二进制位作为一个单位,这种单位称为字节 (√)。

4.微型计算机的字长并不一定是字节的整数倍 (×)。

三、填空题

1.8位有/无符号整数的表示范围写成16进制形式为(80~~7F) /( 00~~FF)。

2.己知:计算机中有一个“01100001”编码,如果把它看作是无符号数,它是十进制什么数(97);如果认为它是BCD,则表示(01100001)BCD;认为它是某个ASCII,则代表( a )字符。

3.若[X]补=X,则X为 ( 非负数)。

4.(00101011)B+(13)D+(1B)H=(123)Q

5.已知:A=10001011,B=11011010,求A∧B=(10001010);A∨B=(11011011)。

6.已知:X=+0010011B,Y= -0111100B,试用补码完成真值(X+Y)=( 11010111);(X - Y)=(01001111)。

7.十进制数的(731)=([1**********]1)BCD。

8.([1**********]1)BCD=(731)十进制数。

9.将一个0~9之间的数据转换为ASCII需加(30H)。

10.大写英文字母转换为小写英文字母需加(20H)。

11.英文字母“A”~“F”转换为十六进制数值A~F需要减(37H)。

四、简答题

1.什么是汇编语言?为什么要学习汇编语言?

答:汇编语言是机器语言的符号表示形式。它不仅是计算机原理、操作系统等课程的必要先修课,而且对于训练学生掌握计算机工作原理、程序设计技术、熟练上机操作和程序调试技术都有重要作用。

3.把下列二进制数转换成十进制数。

① 1101.01=13.25 ② 111001.00011=57.9375

③ 111.001=7.125 ④ 1010.1=10.5

5.把下列十六进制数转换成十进制数。

① A6.DC=166. ② 9AC.BD=2476.

③ B4A.8D=2890. ④ 1AC.0A=428.

6.把下列英文单词转换成ASCII编码的字符串。

① Water=5761746572 ② Great=4772656174

③ Good=476F6F64 ④ After=4166746572

7.回车键、空格键的ASCII代码及其功能是什么?答:0DH、20H。字符从头开始、空一个字符的位置。

第二章课外练习题

一、单项选择题:

1.下列四个寄存器中,哪个寄存器在程序设计中是不可省略的( A )。

(A)CS (B)DS (C)ES (D)SS

2.指令MOV AX, 10[SI]的源操作数字段的寻址方式是( C )。

(A)寄存器寻址 (B)寄存器间址 (C)变址寻址 (D)基址寻址

3.8086∕8088 CPU中可用作寄存器间址的寄存器是( B )。

(A)BX、SI、DI (B)BX、BP、SI、DI

(C)BX、IP、SI、DI (D)BX,DX,SI,DI

4.指令MOV 100[SI][BP],AX 目标操作数的隐含段为( B )。

(A)数据段 (B)堆栈段 (C)代码段 (D)附加段

第二章课外练习题

一、单项选择题:

1.下列四个寄存器中,哪个寄存器在程序设计中是不可省略的( A )。

(A)CS (B)DS (C)ES (D)SS

2.指令MOV AX, 10[SI]的源操作数字段的寻址方式是( C )。

(A)寄存器寻址 (B)寄存器间址 (C)变址寻址 (D)基址寻址

3.8086∕8088 CPU中可用作寄存器间址的寄存器是( B )。

(A)BX、SI、DI (B)BX、BP、SI、DI

(C)BX、IP、SI、DI (D)BX,DX,SI,DI

4.指令MOV 100[SI][BP],AX 目标操作数的隐含段为( B )。

(A)数据段 (B)堆栈段 (C)代码段 (D)附加段

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

1. 当SP, BP, SI,DI用于指针和变址寄存器使用时;

① SP中所含的偏移地址是堆栈段中的偏移地址。 ( √ )

② BP、SI、DI所含的偏移地址是数据段中的偏移地址。 ( × )

2. 奇偶标志位PF,当运算结果的低8位中有偶数个1时,被置为0。 ( × )

3. 零标志位ZF,当运算结果为0时,被置为0。 ( × )

4. 符号标志位SF,在运算结果为负时被置为1。 ( √ )

三、填空题

1.在8086/8088CPU中,有许多寄存器,他们是通用寄存器:( AX )( BX )( CX )( DX );指针和变址寄存器:( SP )( BP )( SI )( DI );段寄存器:( CS )( DS )( SS )( ES );指令指针:( IP )还有一个标志寄存器:( PSW ),他们都是( 16 )位的。

2.IBM PC机内存容量最大为( 1M )B,要寻找这样大的空间,需要( 20 )根地址线。

3.每个逻辑段的最大长度为( 64KB )。

4.在IBM PC机中,有4个专门存放段地址的寄存器,称为段寄存器,请写出以下段寄存器的符号:

代码段寄存器:( CS ) 数据段寄存器:( DS )

堆栈段寄存器:( SS ) 附加段寄存器:( ES )

四、简答题

1.IBM PC 的存储器为什么采用分段结构?

答:是因为要寻找20位存储器地址的需要。使用两个十六进制的寄存器做一个寻找20位寄存器工作的一种方法。

2.什么是逻辑地址?什么是物理地址?如何由逻辑地址计算物理地址?

答:逻辑地址是由两部分组成的,即段的基地址和偏移地址。程序员在编写程序时使用的都是逻辑地址。物理地址就是内存单元中的一个惟一的20位二进制数表示的地址,物理地址的范围是从00000H到FFFFFH。CPU与存储器进行数据交换时所使用的地址就是物理地址。

物理地址=段地址×16D+偏移地址。

3.如果在一个程序段开始执行之前,CS=0A7F0H,IP=2B40H,试问该程序段的第一个字的物理地址是多少?答:物理地址=段地址×16D+偏移地址=0A7F0H×16D+2B40H=0AAA00H

4.一个有16个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字单元地址是多少?

答:=DDF6H+20H-2H(16个字=32个字节=20H个字节)=DE14即70A0::DE14

5.哪些寄存器可以用来指示存储器地址?答:BX、BP、SI和DI。

6.有一个由20个字组成的存储区,其起始处段地址为4701H,偏移地址为2012H。试写出该存储区首单元和末单元的物理地址。答:该存储区末单元的偏移地址=2012H+28H-2(20个字=40个字节=28H个字节)=2038H。即首单元和末单元的物理地址为49022H和49048H。

7.8086微处理器由哪几部分组成?各部分的功能是什么?

答:8086/8088微处理器由两大部分组成:总线接口单元 BIU和执行单元 EU。

①BIU:负责与存储器接口,即CPU与存储器之间的信息传送。即:

BIU从内存的指定部分取出指令,送至指令队列排队。

从内存的指定部分取出执行指令时所需的操作数,送至EU部分。

②EU:负责指令的执行。

8.简述8086 CPU的寄存器组织。

答:8086/8088CPU的寄存器是由①通用寄存器②控制寄存器③段寄存器组成。

9.试述8086 CPU标志寄存器各位的含义与作用。

答:它含有9个有用的标志位(其余7位不用),用于记录指令操作后的结果状态信息或控制处理器操作的标志。其含义与作用如下:

进位标志C(Carry Flag)——当加减运算操作后,结果的最高位产生一个进位或借位,则C=1,否则C=0。各种移位指令,逻辑操作指令等也可影响CF的状态。CF位也可表示无符号数的溢出。

溢出标志O(Overflow Flag)——在算术运算中,带符号数的运算结果超出机器所能表示的数据范围称为溢出,当溢出发生时,则O=1,否则O=0。

带符号数的数据范围。8位运算时为:﹣128 ~ +127;16位:﹣32768 ~ +32767。

符号标志S(Sign Flag)——若运算结果的最高位(D15或D7)为1,则S=1,否则 S=0。 零标志Z(Zero Flag)——若运算的结果为0,则Z=1,否则Z=0。

奇偶标志P(Parity Flag)—— 若运算结果中‘1’的个数为偶数,则P=1,否则P=0。

辅助进位标志A(Auxitiary Carry Flag)——记录运算时第3位(半个字节)产生的进位值,若第3位产生进位,则A=1,否则A=0。在执行BCD调整时使用此标志。

方向标志DF(Direction Flag)——用于在串处理指令中控制处理信息的方向。当DF=1时,每次操作后使变址寄存器SI和DI减小,这样就使得串处理操作从高地址向低地址方向处理。当DF=0时,则使SI和DI增大,使得串处理从低地址向高地址方向处理。

中断标志IF(Interrupt Flag)——当IF=1时,允许CPU响应可屏蔽中断请求,否则关闭中断。 陷阱标志TF(Trap Flag) ——又称单步跟踪。用于调试时的单步方式操作。当TF=1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF=0时,CPU正常工作,不产生陷阱。

10.指出下列MOV指令的源操作数的寻址方式。

MOV AX,1234H =立即

MOV AX,BX =寄存器

MOV AX,[BX] =寄存器间接

MOV AX,TABLE ;TABLE是一个变量名 =直接

MOV AX,[1234H] =直接

MOV AX,[BX+1234H] =基址

MOV AX,[BP][SI] =基址变址

MOV AX,[BX+SI-1234H] =基址变址

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

=21234H MOV AX,[1234H]

=20100H MOV AX,[BX]

MOV AX,TABLE[BX] =2010AH

=10010H MOV AX,[BP]

=10012H MOV AX,[BP][SI]

12.已知:BX=1234H,BP=5678H,SI=1357H,DS=0925H,SS=0468H,CS=4B10H,指出下述

13.有两个16位字1EE5H和2A3CH分别存放在80x86微机存储器的000B0H和000B3H单元中。请用图表示出它们在存储器里的存放情况。

地址 000B0H 000B1H 000B2H 000B3H 000B4H 14.有关寄存器及存储单元的内容如下:

DS=2000H,BX=0100H,SI=0002H,存储单元的内容见习题14示意图。试说

明下列各条指令执行后AX寄存器的内容。

=1200H ①MOV AX,1200H

=0100H ②MOV AX,BX

=4C2AH ③MOV AX,[1200H]

=3412H ④MOV AX,[BX]

=4C2AH ⑤MOV AX,1100[BX]

=7856H ⑥MOV AX,[BX][SI]

=65B7H ⑦MOV AX,1100[BX][SI]

习题14示意图

第三章课外练习题

一、单项选择题:

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

BUF1 DW 8,19

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

CENTH EQU BUF2—BUF1

(A)4 (B)8 (C)14 (D)17

2.在DEBUG环境下查看机器指令使用( B )命令;显示内存数据使用( E )命令。

(A)G (B)U (C)T (D)A (E)D (F)E (G)R

二、填空题:

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

DATA SEGMENT

NUM1 DW 20 ( 2 )

NUM2 DB ‘31H,32H,33H’ ( 11 )

NUM3 EQU 10H ( 0 )

NUM4 DB NUM3 DUP(0) ( 10H )

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 DB -38,'456',?

VR2 DW 6,5 DUP(2)

① MOV AL, VR1 ( -38 )

② 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 $-DAB

MOV AL,DAB_L

XCHG DAB,AL

(A) 05DAH (B) 0DA05H (C) 0F5DAH (D) 0DAF5H

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

MOV AL, 100

MOV BL, -2

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

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

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

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

(C)PUSH AX (D) MOV CX,AX

POP BX MOV AX,BX

MOV BX,CX

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

(A)VAR DW 4142H (B) VAR DW 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 (D) MOV SI,OFFSET DATA

MOV AX,[SI] MOV AL,[SI]

MOV AH,[SI] MOV AH,[SI+1]

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])

2.设有以下程序段,求执行完此程序段后AL寄存器中的内容。(12H)

ABC EQU 2

DATA1 DB 20H

DATA2 DW 1234H

MOV AL,DATA1+ABC

3.下列每组指令有何区别?

① MOV AX,1234H AX←1234H

MOV AX,[1234H] AX←1234H的地址

② MOV AX,TABLE AX←TABLE的数据

MOV AX,[TABLE] AX←TABLE的数据

③ MOV AX,TABLE AX←TABLE的数据

LEA AX,TALBE AX←TABLE的地址

④ MOV AX,BX AX←BX的内容

MOV AX,[BX] AX←BX的地址里的内容

4.写一指令序列,将3456H装入DS寄存器。

MOV AX,3456H

MOV DS,AX

5.不可以从堆栈向哪个段寄存器弹出数据?答:CS

6.若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执

SP

执行前SP 执行后SP 最后SP

7.在8086∕8088微处理器中,PUSH和POP指令在堆栈与寄存器或存储单元之间传送数据时,一次总是传送多少字节?答:2字节。

8.解释XLAT指令是怎样转换AL寄存器中的内容的。并编写一段程序用XLAT指令将BCD码的0~9转换成对应的ASCII,并将ASCII存入数组ARRAY中。

答:XLAT指令是通过AL寄存器加上BX寄存器联合组成的寻址方式找到目标地址后,将内容传送到AL寄存器中。程序如下:

.MODEL SMALL

.STACK

.DATA

BCD DB -7

BCD2ASCTAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

ARRAY DB ?

.CODE

.STARTUP

MOV AL,BCD

LEA BX,BCD2ASCTAB

XLAT

MOV ARRAY,AL

.EXIT 0

END

9.下列ASCII字符串(包括空格符)依次存储在首地址为CSTRING的字节单元中: CSTRING DB ‘BASED ADDRESSING’

请编写指令将字符串中的第一个和第七个字符传送给DX寄存器。

MOV DL,CSTRING

MOV DH,CSTRING+6

10.请编写指令将BX寄存器初始化为变量MYDAT的偏移地址。

MOV BX,OFFSET MYDAT或LEA BX,MYDAT

11.将变量名TABL的段地址送AX的指令是什么?

MOV AX,SEG TABL

12.设MEM是数据段中0A00H单元的符号名,其中存放的内容为0B0CH,以下各指令语句的执行结果是什么?

①MOV AX,MEM 答: 0B0CH

②LEA BX,MEM 0A00H

三、程序分析题

1. A DW 1234H

B DW 5678H

PUSH A

PUSH B

POP A

POP B

试回答:

①上述程序段执行后(A)=5678H,(B)=1234H

②执行前SP=200H,执行后SP=200H

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

1.MOV ES,BX (√)。

2.MOV CS,BX (×)。

3.IN AL,DX (√)。

4.POPF AX (×)。

5.POP 1234 (×)。

6.PUSH A(A为字节单元) (√)。

7.执行LEA BX,TABLE与执行MOV BX,OFFSET TABLE效果一样 (√)。

8.当执行LAHF和SHAF两条指令后,标志位不改变 (×)。

第五章课外练习题

一、单项选择题:

1.假定AX的内容为-32768,在执行了指令NEG AH后,标志位(SF,OF)为(D)。

(A)0,0 (B)0,1 (C)1,0 (D)1,1 2.已知AL,BX为带符号数,计算AL×BX的乘积,使用下述程序段(D)

(A) MOV AH,0

MUL BX

(B) MOV AH,-1

IMUL BX

(C) MOV AH,0

IMUL BX

(D) CBW CBW指令进行字节和字的混合运算 字节--→字

IMUL BX CWD------字-→双字

3.已知AL,BX为无符号数,计算AL×BX的乘积,使用下述程序段( C )

(A)MUL BX (B)IMUL BX (C) MOV AH,0(D)CBW

MUL BX MUL BX

无符号数不能用CBW

4.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是(A)。

(A)表示结果中含1的个数为偶数 (B)表示结果中含1的个数为奇数 (C)表示该数为偶数 (D)表示结果中低八位含1的个数为偶数 5.设AH=0,AL=06H,BL=09H,执行下列两条指令之后,其结果应是(A)。

ADD AL,BL

AAA AL寄存器的低四位在A和F之间,或AF标志是1,加6调整,AH加1 (A)AH=01,AL=05 (B)AH=1, AL=15 (C)AH=0 ,AL=0FH (D)AH=0, AL=05

6.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为(B)。

(A)OF=1,CF=0 (B)OF=1,CF=1 (C)OF=0,CF=0 (D)OF=0,CF=1

7.当执行完下列两条指令后,标志位CF和SF的值为( D )。

MOV AL,0C4H ADD AL,9DH (A)0,0 (B)1,1 (C)0,1 (D)1,0

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

1.ADD [SI], [BX] ( × ) 2.ADD AX, 100 ( √ ) 3.ADD AX, BL ( × ) 4.ADD [SI], 100 ( √ ) 5.ADD ES, BX ( √ ) 6.INC [BX] ( √ )

7.SUB BYTE PTR [SI],1 ( √ ) 8.DEC [BX],1 ( × )

三、指出下列指令中的错误,并写出与该条指令意义相近的所有可能的正确指令。

1.ADD BH, AX

(类型错误。改正:ADD BX,AX) 2.SUB 100H,AX

(立即数不可做目标操作数。改正:SUB AX,100H) 3.MOV DS, 100H

(立即数不可以直接向段寄存器送数。改正:MOV AX,100H和MOV DS,AX) 4.MOV [DI], [100H]

(两个操作数不可以同时是存储器中的数。改正:MOV AX,[100H]和MOV [DI],AX) 5.INC 100H

(立即数不可做目标操作数。改正:MOV AX,100H和INC AX) 6.MOV AL, ARRAY [BX][BP]

(没有此寻址方式。改正:MOV AL,ARRAY [BX][SI]) 7.ADD [BX],[SI]

(两个操作数不可以同时是存储器中的数。改正:MOV AX,[SI]和ADD [BX],AX) 四、填空题

1.当执行MUL BX指令后,乘积的高半部分在(DX)中,低半部分在(AX)中。

2.当执行DIV BX指令后,被除数在(DX,AX)中,所得商在(AX)中,余数在(DX)中。 3.已知AL, BL中数据为无符号数,若求AL∕BL的商,应使用指令序列为:

(MOV AH,0)和(DIV BL)。

4.已知AL, BL中数据为带符号数,若求AL∕BL的商,应使用指令序列为:

(CBW ) 和( IDIV )。

5.用一条语句实现AX的内容加1,要求不影响CF(INC AX )。

6.将AX的内容,减去0520H,和上次运算的借位,选用(SBB AX,0520H)指令。 7.在SUB AX,BX指令执行后,CF=1,说明:

①最高有效位(有借位)。

②对(无符号)数,操作结果溢出。

五、简答题

1.写一指令序列,完成将存于AX、BX中的压缩BCD数加到存于CX、DX中的8位BCD数上的操作。

PUSH AX

MOV AL,BL ADD AL,DL DAA

MOV DL,AL MOV AL,BH ADC AL,DH DAA

MOV DH,AL POP BX

MOV ADC DAA MOV MOV ADC DAA MOV

AL,BL AL,CL CL,AL AL,BH AL,CH CH,AL

第六章课外练习题

一、单项选择题:

1.JMP SI的目标地址偏移量为( A )。

(A)SI的内容 (B)SI所指向的内存字单元之内容 (C)SI+IP的内容 (D)IP+ [SI] 2.JMP WORD PTR [BX]转移的目标地址是( D )。

(A)BX的内容 (B)SP+BX之和 (C)IP+ [BX]之和 (D)BX指出的内存单元之内容 3.当A≥B时转移的条件转移指令为(A,B为带符号数)( D )。

(A)JA (B)JAE (C)JG (D)JGE

4.已知X,Y为带符号数,两个数比较后,欲判断X≤Y发生转移,应使用( C )指令。

(A)JBE (B)JL (C)JNG (D)JNA

5.假定AX和BX寄存器中存放的是有符号整数,如果AX>BX则转移到LABEL,应采用下面哪一条指令序列?( D )。

(A) SUB AX,BX (B) SUB AX, BX

JC LABEL JNC LABEL

(C) CMP AX, BX (D) CMP AX, BX

JA LABEL JG LABEL

6.已知AX=8078H, BX=5610H,指令CMP BL,AH执行后OF,CF的值为( D )

(A)0,0 (B)0,1 (C)1,0 (D)1,1 7.在汇编下列条件转移指令中,两条指令功能不一样的是( D )。

(A)JZ 与JE (B)JC与JB (C)JA与JNBE (D)JP与JS 8.循环指令LOOPNZ终止循环的条件是( B )。

(A)CX=0,且ZF=0 (B)CX=0, 或ZF=1 (C)CX0,且ZF=0 (D)CX0, 或ZF=1

9.在循环次数已知的情况下,采用哪种方法控制循环程序最方便( A )。

(A)计数法 (B)条件控制法

10.循环控制指令隐含指定哪个寄存器作为循环计数器( B )。

(A)CL (B)CX (C)AL (D)AX

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

1.两个数相等时进行转移可用JZ指令 ( √ ) 2.当PF=1时发生转移的条件转移指令为JPO ( × ) 3.当X

1.当两个数不相等时,发生转移的条件转移指令有JNE和( JNZ )。 2.当PF=0时,发生转移的条件转移指令为JNP和( JPO )。

3.当A≥B(A,B为无符号数)时,发生转移的条件转移指令有( JAE )( JNB )。

4.设有下列程序段: ADD AX, BX JNO L1 JNC L2 SUB AX, BX JNC L3 JNO L4 JMP SHORT L5

如果AX和BX的内容如习题4图形,则该程序分别执行后,程序转向哪里? 四、程序分析题

1.阅读如下程序,回答所提出的问题,假定X1,X2,...Xn为无符号数。 .MODEL SMALL .STACK .DATA

BLOK DW X1,X2,..,Xn COUNT EQU ($-BLOK)/2 RESULT DW COUNT,?

.CODE .STARTUP

LEA BX,BLOK-2 MOV CX,RESULT XOR AX,AX

GOON:

ADD BX,2 CMP AX,[BX] JAE NEXT MOV AX,[BX]

NEXT:

LOOP GOON

MOV RESULT+2,AX

.EXIT 0 END

程序执行完,回答下述问题:

RESULT+2字存储单元的内容=MAX(X1,X2,..,Xn) 程序循环次数=( COUNT ) [BX]=( Xn )

2.下列程序完成的是什么功能?(SUMn=|BUF1n|+|BUF2n|。两个数组BUF1和BUF2对应位绝对值之和存入SUM对应位)

LEA SI, BUF1 LEA BX, BUF2 LEA DI, SUM MOV CX, 100

AGAIN:

MOV CMP JGE NEG

K1:

MOV CMP JGE NEG

K2:

ADD AX, DX MOV [DI], AX ADD SI, 2 ADD DI, 2 ADD BX, 2 LOOP AGAIN

3.下列程序完成的是什么功能?(DATX1数组中后100个数送DATX2数组中) DATX1 DB 300 DUP(?) DATX2 DB 100 DUP(?)

MOV SI,0 MOV DI,0 MOV BX,200 MOV CX,100

NEXT:

MOV AL,DATX1 [BX][SI] MOV DATX2 [DI],AL INC SI INC DI LOOP NEXT

4.假设X和X+2单元的内容为双字数据P,Y和Y+2单元的内容为双字数据Q(X单元与Y单元为低位字),说明下列程序段完成什么工作?()

MOV DX, X+2

MOV AX, X

ADD AX, X

ADC DX, X+2

CMP DX, Y+2

JL L2

JG L1 CMP AX, Y JBE

L2

AX,

AX, K1 AX DX, BX, K2 BX

[SI] 0

[BX] 0

MOV AX, 1 HLT

L2: MOV AX, 2

HLT

5.指出以下程序执行后ANS的内容是什么?(在三个带符号数中求最大数。即ANS=1240H) L1:

DSEG SEGMENT

D1 DW 9CC0H D2 DW 1240H D3 DW 0620H ANS DW ?

DSEG ENDS

CSEG SEGMENT

ASSUME DS:DSEG,CS:CSEG

START:

MOV AX,DSEG MOV DS,AX MOV AX,D1 CMP AX,D2 JG CMP13 MOV AX,D2 CMP AX,D3 JG OK

D3G: MOV AX,D3

JMP OK

CMP13: CMP AX,D3

JL D3G

OK: MOV ANS,AX

MOV AH,4CH INT 21H

CSEG ENDS

END START

6.下述程序段运行后,S9开始的10个字节存储单元内容是什么?(9,8)

DATA SEGMENT

S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS

LEA SI,S9 LEA DI,S9+1 MOV CX,5

LOP: MOV AL,[SI]

XCHG AL,[DI]

1,0,3,2,5,4,7,6,

MOV [SI],AL ADD SI,2 ADD DI,2 DEC CX JNZ LOP

7.指出下列程序段执行后AL内容是什么?

① ┆(60H) MOV AL, 60H CMP AL, 0BBH JB L2 L1:MOV AL, 0BBH L2:NOP ;NOP为空操作

② ┆(61H) MOV AL, 60H CMP AL, 0BBH JL L2 L1:INC AL L2:NOP ;NOP为空操作 ④ ┆(0) XOR AL, AL

MOV BL, 98H ADD BL, 88H JNO L2

L1:MOV AL, 0 L2:NOP ;NOP为空操作

③ ┆(0FFH)

XOR AL, AL

MOV BL, 98H ADD BL, 88H JNC L2 L1:DEC AL L2:NOP ;NOP为空操作

8.指令序列为: CMP AX, BX JX L1

请在能引起转移到L1单元的条件转移指令下面划“√”,

五、编程题

1.将AX寄存器中的16位数分成4组,每组4位,然后把这4组数分别放在AL、BL、CL和DL中的最低4位。

MOV CL,4 MOV DL,AL AND DL,0FH MOV BL,AH AND BL,0FH ROL AX,CL

AND AL,0FH MOV CL,AH AND CL,0FH

2.将BUF有符号双字节数据区中的最大数及最小数分别送MAX及MIN存储单元。 .数据段

BUF DW 1010H,2030H,19H,5555H,3435H,0FFFFH COUNT EQU ($-BUF)/2 MAX DW ? MIN DW ? .代码段

MOV CX, COUNT DEC CX

OUTLP: MOV DX,CX

LEA BX,BUF

INLP: MOV AX,[BX]

CMP AX,[BX+2] JL NEXT

XCHG AX,[BX+2] MOV [BX],AX

NEXT: ADD BX,2

DEC DX JNZ INLP LOOP OUTLP

MOV AX,BUF[0]

MOV BX,BUF[COUNT+COUNT-2] MOV MIN,AX MOV MAX,BX

3.已知一多字节数据存放在内存DATA开始的连续单元中,数据长度在LEN单元,编制程序计算其绝对值并存入原单元。

MOV SI,0

MOV CX,LEN

MOV AL,DATA[LEN-1] CMP AL,0 JGE QUIT0 CLC

AGAIN:

MOV AL,0 SBB AL,DATA[SI] MOV DATA[SI],AL INC SI

LOOP AGAIN QUIT0: NOP

4.编制程序,将一个包含有20个数据的数组M分成两个数组:正数组P和负数组N。

MOV BX,0 MOV SI,0 MOV DI,0 MOV CX,20

AGAIN:MOV AL,M[BX]

CMP AL,0 JL FS

MOV P[DI],AL INC DI JMP OK

FS: MOV N[SI],AL

INC SI

OK: INC BX

LOOP AGAIN

5.在首地址为DATA的数组中,存放了100H个16位补码数。求出它们的平均值放在AX寄存器中,并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。

MOV AX,0 MOV SI,0 MOV CX,100

AGAIN:ADD AX,DATA[SI]

ADD SI,2 LOOP AGAIN MOV DX,0 MOV CX,100 IDIV CX ;AX为平均数 MOV BX,0 MOV SI,0 MOV CX,100

AGA: CMP AX,DATA[SI]

JGE NEXT INC BX ;BX为小于AX的个数

NEXT: ADD SI,2

LOOP AGAIN1

6.编写程序,求出首地址为DATA的100字无符号数组中的最小偶数,并把它存放AX中。

MOV AX,0FFFFH ;假设FFFFH是本数组中的最小偶数 MOV SI,0 MOV CX,100

AGAIN:MOV BX,DATA[SI]

TEST BX,1 JNZ NEXT CMP AX,BX

JB

MOV

NEXT: ADD

LOOP NEXT AX,BX SI,2 AGAIN

7.设有一段英文,其字符变量名为ENG,试编写一个程序,查对单词READ在该文中出现次数并存放在BX寄存器中。

.MODEL SMALL

.STACK

.DATA

ENG DB 'SNNREADRAREADUNSUN'

CNTENG EQU $-ENG

KEYWORD DB 'READ'

CNTKEY EQU $-KEYWORD

.CODE

.STARTUP

PUSH DS

POP ES

XOR AL,AL

LEA BX,ENG

MOV DX,CNTENG

SUB DX,CNTKEY

INC DX

CLD

AGAIN: MOV DI,BX

LEA SI,KEYWORD

MOV CX,CNTKEY

REPZ CMPSB

JNZ LOP1

INC AL

LOP1: INC BX

DEC DX

JNZ AGAIN

.EXIT 0

END

8.测试AL寄存器的最低位是否为0,若为0,跳转到B1,否则,跳转到B2。

TEST AL,1

JZ B1

JMP B2

9.比较两个字符串STARING1和STARING2所含字符是否完全相同,若相同则显示“MATCH”,不同则显示“NO MATCH”。

.MODEL SMALL

.STACK

.DATA

NO_MA DB ‘NO_MATCH’,0DH,0AH,’$’

MAT DB ‘MATCH’,0DH,0AH,’$’

.CODE

.STARTUP

MOV SI,0

MOV DI,0

MOV CX,COUNT

AGAIN:MOV AL,STRING1[SI]

CMP AL,STRING2[DI]

JZ MA

MOV DX,OFFSET NO_MA

MOV AH,9

INT 21H

JMP OK

MA: INC SI

INC DI

LOOP AGAIN

MOV DX,OFFSET MAT

MOV AH,9

INT 21H

OK:

.EXIT 0

END

10.设在变量单元A、B和C中存放有三个数, 若三个数都不为0,

0,则将其他两个单元也清零,请编写此程序。

MOV AX,A

CMP AX,0H

JZ NEXT

MOV BX,B

CMP BX,0H

JZ NEXT

MOV CX,C

CMP CX,0H

JZ NEXT

ADD D,AX

ADD D,BX

ADD D,CX

JMP OK

NEXT: MOV A,0

MOV B,0

MOV C,0

OK: NOP

11.设变量X为带符号整数,试按下面的要求编制此程序:

①如果X的绝对值大于5,变量FX赋值为零。

②如果X的绝对值不大于5,变量FX赋值为1—X 则求出三个数之和存入D

中;若有一个为

MOV FX,0

MOV AX,X

CMP AX,0H

JG NEXT

NEG AX

NEXT: CMP AX,5

JA OK

NEG AX

ADD AX,1

MOV FX,AX

OK: NOP

12.编制程序计算(见下图):

设X,Y为双字节带符号数据,分别存放在DAX,DAY单元,计算结果存入RLT单元。

X×Y (Y>0,X>0)

S= X÷Y (Y

|X+Y| (其它)

MOV AX,DAX

MOV BX,DAY

CMP AX,0H

JL NEXT

CMP BX,0H

JL QT

IMUL BX

JMP OK

NEXT: CMP BX,0

JGE QT

MOV DX,0

IDIV BX

JMP OK

QT: ADD AX,BX

JNS OK

NEG AX

OK: MOV RLT,AX

第七章课外练习题

一、单项选择题:

1.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是(A )。

(A)MOV AL,00H (B)AND AL,00H

(C)XOR AL,AL (D)SUB AL,AL

2.下列指令执行后总是使CF=0,OF=0的是(A )。

(A)AND (B)NEG (C)NOT (D)INC

3.若(AX)=10101101B,为了使其内容变为01010010B,下列(A)指令执行一次即可完成此操作?

(A)NOT指令 (B)OR指令 (C)AND指令 (D)XOR指令

4.实现将DX:AX中存放的32位数扩大四倍,正确的程序段是(C )。

(A)SHL AX,2 (B) RCL AX,2

ROL DX,2 SHL DX,2

(C)MOV CX,2 (D) SHL AX,1

LOP: SHL AX,1 SHL AX,1

RCL DX,1 RCL DX,1

LOOP LOP RCL DX,1

5. TA1 DW 0102H,0304H,0506H

TA2 DB 02H,04H,06H

MOV BX, OFFSET TA1

ADD BL, TA2+2

MOV BX, [BX]

AND BX, 0FFH

ADD BH, BYTE PTR TA1 [BX]

上述指令序列运行后,BX的内容是(B)。

(A)0605H (B)0402H (C)0606H (D)0204H

6.NEXT是某指令语句标号,下述哪个程序段不能实现转移到NEXT语句执行(C )。

(A) JMP NEXT (B) MOV BX, OFFSET NEXT

JMP BX

(C) MOV BX, NEXT (D) LEA AX, NEXT

JMP BX JMP AX

7.测试BL内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的是(D )。

(A) TEST BL,4FH (B) OR BL,4FH

JZ NEXT JZ NEXT

(C) AND BL,4FH (D) XOR BL,4FH

JZ NEXT JZ NEXT

8.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,括号处的指令应为(A )。

TEST BH,01H

( ) K1

(A)JNE (B)JZ (C)JS (D)JC

9.下面指令序列测试BX中的数是否为负数,若为负数则转移至F1处,不正确的指令序列应为

(C )。

(A) TEST BX,8000H (B) AND BX,BX

JNZ F1 JS F1

(C) CMP BX,0H (D) SUB BX,0H

JNS F1 JL F1

10.编写分支程序,在进行条件判断前,可用指令构成条件,下列指令中不能形成条件的指令是

(D )。

(A)CMP (B)SUB (C)AND (D)MOV

11.为使CX= -1时,转至MINUS而编制了一指令序列,其中错误的序列是(D)。

(A) INC CX (B) SUB CX,0FFFFH

JZ MINUS JZ MINUS

(C) AND CX,0FFFFH (D) XOR CX,0FFFFH

JZ MINUS JZ MINUS

二、程序分析题

1. AND AL, AL

JZ BRCH1

RCR AL, 1

JZ BRCH2

RCL AL, 1

INC AL

JZ BRCH3

上述程序运行后,请回答:

①当AL=( 0 )时,程序转向BRCH1;

②当AL=( 1 )时,程序转向BRCH2;

③当AL=( -1 )时,程序转向BRCH3。

2.现有下列程序段:

MOV AX,6540H

MOV DX,3210H

MOV CL,04

SHL DX,CL

MOV BL,AH

SHL AX,CL

SHR BL,CL

OR DL,BL

试问上述程序段运行后,(AX)=(5400H),(BL)=(06H)(DX)=(2106H)

3.分析下面程序段:

MOV AL,200

SAR AL,1

MOV BL,AL

MOV CL,2

SAR AL,CL

ADD AL,BL

试问程序段执行后(BL)=(0E4H),(AL)=(0DDH)

4.程序段如下:

BLK1 DB 46,84,34,-5,20,122,73

MOV CX,7

LEA SI,BLK1

NEXT: MOV AL,[SI]

INC SI

TEST AL,81H

LOOPZ NEXT

MOV BL,[SI]

请回答程序段运行后:(AL)=(0FB)H,(BL)=(14)H

四、用最少的程序编写下列程序段:

1.编写完成下列功能的小程序段:

⑪ 将寄存器AL的第4,3位取反,其余位保持不变。

XOR AL, 00011000B

⑫ 将寄存器AL的第4,3位清零,其余位保持不变。

AND AL, 11100111B

⑬ 将寄存器AL的第4,3位置1,其余位保持不变。

OR AL, 00011000B

⑭ 将寄存器AL的第4,3位写入MEN单元中的第4,3位,其余位保持不变。

AND AL,00011000B

AND MEN,11100111B

OR MEN,AL

⑮ 将寄存器AL的第i位写入MEN单元的第i位,其余位保持不变,i值在CL中。

MOV BL, 1

SHL BL, CL

AND AL, BL

NOT BL

AND MEN, BL

OR MEN, AL

⑯ 将寄存器AL的第i+1,i位写入MEN单元的第i+1,i位,其余位保持不变,i值在CL中。

MOV BL, 3

SHL BL, CL

AND AL, BL

NOT BL

AND MEN, BL

OR MEN, AL

⑰ 如果寄存器AL的第6,5位为00,则将AH清0,否则置全1。

TEST AL, 01100000B

JZ L1

MOV AH,0FFH

JMP OK

L1: MOV AH,0

OK: NOP

⑱ 如果寄存器AL的第6,5位为01,则将AH清0,否则置全1。

AND AL,01100000B

CMP AL,00100000B

JZ L1

MOV AH,0FFH

JMP OK

L1: MOV AH,0

OK: NOP

⑲ 如果寄存器AL的第6,5位为10,则将AH清0,否则置全1。

AND AL,01100000B

CMP AL,01000000B

JZ L1

MOV AH,0FFH

JMP OK

L1: MOV AH,0

OK: NOP

⑳ 如果寄存器AL的第6,5位为11,则将AH清0,否则置全1。

AND AL,01100000B

CMP AL,01100000B

JZ L1

MOV AH,0FFH

JMP OK

L1: MOV AH,0

OK: NOP

⑴ 如果寄存器AL的数据为偶数,则将AH清0,否则置全1。

TEST AL, 1

JZ L1

MOV AH,0FFH

JMP OK

L1: MOV AH,0

OK: NOP

⑵ 如果寄存器AL的数据为正数,则将AH清0,否则置全1。

TEST AL, 80H

JZ L1

MOV AH,0FFH

JMP OK

L1: MOV AH,0

OK: NOP

2.不允许使用乘法指令来完成AX与12的乘法运算。

SHL AX, 1 ;将AX乘2(等于2倍)

MOV BX, AX ;预存一份AX在BX内

SHL AX, 1 ;将AX再乘2(等于4倍)

ADD AX, BX ;加上原有2倍(等于6倍)

SHL AX, 1 ;再乘2(等于12倍)

3.写一指令序列,将DX与AX中的双字左移三位。

MOV CX,3

LOP: SHL AX,1

RCL DX,1

LOOP LOP

4.内存单元MEMB存放着一个8位的数据,将它的高4位与低4位互换。

MOV CL, 4

ROL MEN, CL

5.将AL的第7位和第0位,第6位和第1位,第5位和2第位,第4位和第3位互换。

MOV CX,7

MOV BL,0

LOP: MOV AH,AL

AND AH,1

ADD BL,AH

SHR AL,1

SAL BL,1

LOOP LOP

ADD AL,BL

五、简答题

1.至少使用三种方法(提示:MUL、SHL和SHR指令)实现将DATA中的字节数据乘以64的指令序列。

① MOV AL,64

MUL DATA

② MOV CL,6

SHL DATA,CL

③ MOV AH,DATA

MOV AL,0

SHR AX,2

MOV DATA,AL

第九章课外练习题

一、单项选择题:

1.已知CALL BX执行前SP=100H,执行后SP的内容为( D )。

(A)100H (B)102H (C)98H (D)0FEH

2.已知SP=100H,指令RET(远返回)执行后SP的值为( B )。

(A)106H (B)104H (C)0FCH (D)0FAH

3.已知SUBR是一个属性NEAR的子程序,下述调用SUBR子程序的指令序列中,哪一个不能实现调用SUBR的目的( C )。

(A)CALL SUBR (B)CALL NEAR PTR SUBR

(C)MOV BX,OFFSET SUBR (D)MOV BX,OFFSET SUBR

CALL NEAR PTR [BX] CALL BX

4.下面是将某存储区清0的宏定义,如将BUFF开始的100个存储单元清0,则其宏调用格式为( C )。

CLEAR MACRO DIR,DST,CNT

DIR

LEA DI,DST

MOV CX,CNT

XOR AL,AL

REP STOSB

ENDM

(A)CLEAR BUFF,100 (B)CLEAR STD,BUFF,100

(C)CLEAR CLD,BUFF,100 (D)CLEAR BUFF,STD,100

5.宏指令库以( C )格式存放在磁盘上。

(A)可执行代码 (B)目标代码 (C)源代码

6.汇编程序使用( C )伪指令使重复块重复多次。

(A)LOOP (B)REPE (C)REPT (D)LOCAL

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

1.CALL WORD PTR[SI] ( × )

2.CALL [BX] [SI] ( × )

3.CALL AX ( × )

4.CALL [BX] ( √ )

5.CALL NEAR PTR [SI] ( × )

6.CALL FAR PTR [SI+2] ( × )

7.宏的处理是在程序执行过程中处理的 ( × )

8.宏定义中的形式参数可以多于宏调用的实在参数 ( √ )

三、填空题

1.调用程序与子程序之间的参数传递方法有三种,即堆栈法(寄存器法)(存储单元)。

2.LOCAL用于说明局部标号的伪指令,它只允许在(宏程序中)使用,其位置必须在(第一条指令前)。

四、简答题

1.指出CALL指令与JMP指令的异同?

答:相同----都可以无条件跳转到目标地址。不同---CALL指令有返回,而JMP没有;CALL指令影响堆栈段的变化,而JMP不影响堆栈段。

3.段内调用和段间调用的异同点是什么?

答:段内调用是指在调用和返回过程中,转返地址不涉及CS的变化,只通过IP内容的变化实现控制的转返;而段间调用需要CS,由CS和IP的变化共同决定控制的转返。

4.主程序和子程序之间有哪几类参数传递方法?

答:主程序与子程序之间的参数传递方法有三种,即堆栈法、寄存器法和存储单元。

5.子程序说明文件由哪几个部分组成?并分别说明各组成部分的含义?

答:编写子程序的目的在于减少源程序中某些相同功能程序段的重复书写,以利于自己和他人编写程序时使用。一般包含下述几项内容:

(1)子程序名称:用子程序定义伪指令定义该子程序时的名字;

(2)子程序功能:用自然语言或数学语言等形式简单清楚地描述子程序完成的任务;

(3)入口参数:说明子程序要求有几个入口参数,这些参数表示的意义及存放位置;

(4)出口参数:说明子程序要求有几个输出参数(运行结果),这些参数表示的意义及存放位置;

(5)受影响的寄存器:说明子程序运行后,哪些寄存器的内容被破坏了,以便使用者在调用该子程序之前注意保护现场。

五、程序分析题

1.下述程序段运行后,AL=( 88H ),CL=( 80H )

MOV AL,38H

MOV BL,49H

CALL SUBO

INC AL

DEC CL

SUBO PROC

ADD AL,BL

MOV CL,AL

DAA

RET

SUBO ENDP

2.宏指令GOTO L,X,REL,Y(其中REL可以是Z,NZ,L,NL等)定义如下:

GOTO MACRO L,X,REL,Y

IFB

JMP L

①展开宏调用GOTO LOP,SUM,NZ,15

MOV AX,SUM

CMP AX,15

JNZ LOP

②该宏指令的功能。

②可以根据不同情况产生无条件转移指令或比较和条件转移指令。

六、填空完善程序

1.下面是计算S=X2+Y2的程序,其中平方值的计算是用直接查表法编写的SQ1子程序。设在DAX,DAY单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,将结果存入SQR单元。

.MODEL SMALL

.STACK

.DATA

DAX DB -7

DAY DB 4

SQRTAB DB 0,1,4,9,16,25,36,49,64,81

SQR DB ?

.CODE

.STARTUP

MOV AL,DAX

CALL SQ1

MOV CL,AL

( MOV AL,DAY )

CALL SQ1

ADD CL,AL

( MOV SQR,AL )

.EXIT 0

SQ1 PROC NEAR

( TEST AL,80H )

JZ K1

NEG AL

K1: LEA BX,SQRTAB

( XLAT )

RET

SQ1 ENDP

END

ELSE MOV CMP J&REL ENDIF ENDM 回答下列问题: ①宏展开: 1 1 1 AX,X AX,Y L

2.请根据下面子程序的说明文件填充其中的空白。子程序的说明文件如下:

子程序名称:AVER

子程序功能:求一组带符号数据的平均值

入口参数:数据的首地址在DS:SI中存放,数据个数存放在CL中

出口参数:AL=数据的平均值

AVER PROC

PUSH SI

PUSH CX

XOR BX,BX

( MOV CH,0 )

NEXT: LODSB

( CBW )

ADD BX,AX

LOOP NEXT

POP CX

( MOV AX,BX )

IDIV CL

( POP SI )

RET

AVER ENDP

七、改错题:下面是将AL中低4

用。程序中有错,请改正。 ALTOASC MACRO AND AL,0FH JL ALLN1 ADD AL,7 ALLN1: ADD AL,30 ALTOASC END 八、编程题

1.编写一个子程序,完成自然数1~100的求和运算。

SUM PROC NEAR

PUSH AX

PUSH CX

MOV AX,0

MOV CX,100

AGAIN:

ADD AX,CX

LOOP AGAIN

POP CX

POP AX

SUM ENDP

2.编写多字节加法子程序,写出子程序说明文件。

子程序名称:PADD

子程序功能:多字节加法

入口参数:两数据的首地址分别为DATA1和DATA2,数据个数存放在CX中

出口参数:多字节数据的和存放在首地址为SUM的内存中

受影响的寄存器:AX、BX、CX。

PADD PROC NEAR

MOV BX,0

MOV CX,LEN

CLC

AGAIN:

MOV AL,DATA1[BX]

ADC AL,DATA2[BX]

MOV SUM[BX],AL

INC BX

LOOP AGAIN

PADD ENDP

3.数据区保存有10个学生的学习成绩,要求编写一个子程序,将每个学生的成绩转换成五个等级(A:90~100;B:80~89;C:70~79;D:60~69;E:60以下),然后将等级存放在原数据位置。要求:用寄存器传递参数方法来做。

COV PROC NEAR

PUSH AX

PUSH BX

PUSH CX

MOV BX,0

MOV CX,10

AGAIN:

MOV AL,DATA[BX]

CMP AL,60

JL A60

CMP AL,70

JL A70

CMP AL,80

JL A80

CMP AL,90

JL A90

MOV DATA[BX],41H

JMP LOP

A90: MOV DATA[BX],42H

JMP LOP

A80: MOV DATA[BX],43H

JMP LOP

A70: MOV DATA[BX],44H

JMP LOP

A60: MOV DATA[BX],45H

LOP: INC BX

LOOP AGAIN

POP CX

POP BX

POP AX

COV ENDP

4.编写计算某项比赛参加者平均分的子程序。给定条件:12名评委,每名评委给分范围0~10分(整数),存放在DATAX数组中,将平均分的整数部分存入AVERAGE单元。

AVE PROC NEAR

;===SUM====

MOV CX, 12

MOV SI, 0

MOV AL, 0

AGAIN:

ADD AL,DATAX[SI]

INC SI

LOOP AGAIN

;=====MAX=====

MOV SI, 0

MOV BL,0

MOV CX,12

AGAIND:

CMP BL,DATAX[SI]

JA NEXTD

MOV BL,DATAX[SI]

NEXTD: INC SI

LOOP AGAIND

;====MIN=====

MOV SI, 0

MOV BH,0

MOV CX,12

AGAINX:

CMP BH,DATAX[SI]

JB NEXTX

MOV BH,DATAX[SI]

NEXTX: INC SI

LOOP AGAINX

SUB AL,BL

SUB AL,BH

CBW

MOV CL,12

DIV CL

MOV AVERAGE,AL

AVE ENDP

5.定义将任一个寄存器循环左移或右移N位的宏指令。

YIWEI MACRO REG,LR,N

MOV CL,N

RO&LR REG,CL

ENDM

6.试定义求两个多字节数之和的宏指令。

MADD MACRO SRC,DST,SUM,LEN

LOCAL AGAIN

MOV BX,0

MOV CX,LEN

CLC

AGAIN:

MOV AL,SRC[BX]

ADC AL,DST[BX]

MOV SUM[BX],AL

INC BX

LOOP AGAIN

ENDP

第十章课外练习题

一、单项选择题:

1.中断向量是指( B )。

(A)中断向量表的地址 (B)中断处理子程序的入口地址

(C)被中断程序的入口地址 (D)被中断程序的断点地址

2.8086∕8088微处理器可访问的I ∕ O地址空间大小为( B )。

(A)1KB (B)64KB (C)1MB (D)16MB

3.以80X86为CPU的PC机,在实地址工作方式下,其中断向量长度为( B )。

(A)8个字节 (B)4个字节 (C)2个字节 (D)1个字节

4.在下列指令中,有( B )指令是不合法的。

①MOV [SI],[DI]

②IN AL,DX

③LEA AL,SI

④JMP WORD PTR [BX]

(A)1条 (B)2条 (C)3条 (D)4条

5.根据下面提供的PC机内存中的数据,INT 11H中断服务程序的入口地址是( B )。 0000:0040 B3 18 8A CC 4D F8 00 F0—41 F8 00 F0 C5 18 8A CC 0000:0050 39 E7 00 F0 A0 19 8A CC—2E E8 00 F0 D2 EF 00 F0

(A)4DF8:00F0 (B)F000:F84D (C)A019:8ACC (D)CC8A:19A0

二、填空题

1.在IBM—PC机中,CPU与外设之间的信息交换通常采用(查询)方式、(中断)方式和DMA方式。

2.(中断)是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。

三、简答题

1.请叙述I/O地址空间的含义?

答:I/O地址的空间存在与接口电路中,CPU对此空间的访问采用I/O指令完成。此地址空间大小为64KB。

2.IRET指令的主要作用是什么?

答:IRET中断返回指令。它使CPU从中断服务程序返回被中断的断点处继续执行。

3.计算机硬件中为什么采用接口装置?分为哪两类接口?

答:其一,CPU与外设两者的信号线不兼容;其二,两者的工作速度不兼容;其三,若不通过接口,而由CPU直接对外设的操作实施控制,就会使CPU处于穷与应付与外设打交道之中,大大降低CPU的效率;其四,若外设直接由CPU控制,也会使外设的硬件结构依赖与CPU,对外设的发展不利。因此,在CPU与外设之间有必要设置接口装置,以便协调CPU与外设两者的工作,提高CPU的效率,并有利于外设按只身的规律发展。接口分为并行分为和串行分为。

4.通常所说的I/O操作是指CPU直接对I/O设备进行操作,这话对吗?

答:错误。是指对I/O端口的操作,而不是对I/O设备的操作。即CPU所访问的是I/O设备相关的端口,而不是I/O设备本身。

5.在独立编址方式下,CPU采用什么指令来访问端口?

答: IN AL,PORT ;输入

OUT PORT,AL ;输出

6.什么是端口?答:端口(PORT)是接口电路中能被CPU直接访问的寄存器的地址。

四、编程题

1.用80286以上指令实现32位无符号数的乘法运算。两个乘法操作数分别放在VAR1和VAR2地址内,运算后的结果,则放在RESULT地址内。

.MODEL SMALL

.486

.STACK

.DATA

VAR1 DD 12121212H

VAR2 DD 34343434H

RESULT DD 2 DUP(0)

.CODE

.STARTUP

MOV EAX,VAR1

MUL VAR2

MOV RESULT,EAX

MOV RESULT+4,EDX

.EXIT 0

END


相关内容

  • 化学教学法课程指导书
    现代远程教育 <中学化学教学法> 课 程 学 习 指 导 书 作者:韩春亮 2009年 3月 课程学习方法指导 学习方法是否得当直接关系到学习效果的优劣.好的学习方法使你事半功倍,不良的学习方法使你事倍功半,因此学习<中学 ...
  • 20**年教师资格证[中学综合素质]章节习题:学生观
    2016教师资格证<中学综合素质>章节习题:学生观 第一章 第二节 学生观 一.单项选择题 1.下列所述不符合"以人为本"教育理念的是( ). A.遵循学生的生理.心理特点和发展规律设计教学计划 B.在教学过 ...
  • 初中学生学习方法指导4
    初中学生学习方法指导 第 四 讲 那么怎样才能专心上好课 1.重听讲. 充分认识到老师在上课时的重要作用. 教师在教学活动中的主导作用,在上课时表现得最充分,时而指引方向,时而启发诱导,时而鼓劲加油,时而扶持帮助,教者始终处在学生的前列,为 ...
  • 大学课后题答案
    不用买参考书了!大学课本答案大全!--爱死你了!( 为什么大四才发现啊) 2008-12-18 16:50 | (分类:) 注册可用 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程 ...
  • 中学生学习方法指导(90house)
    中学生学习方法指导 一.制定合理的计划 凡事预则立,不预则废.恩格斯说:;;没有计划的学习,简直是荒唐.;;学家们一致认为先进和后进同学的差异,重要的一点是先进都有比较明确具体的,而后进大多是学到哪里算哪里,或指向哪里自己就到哪里,或指向哪 ...
  • 中小学信息技术教师备课培训内容和要求
    中小学信息技术教师备课培训内容和要求 一.备课的步骤(种类) 备好课是上好课的先决条件,认真备课是提高教学质量的关键.备好课,就能争取工作中的主动权.这种准备工作愈充分.主动性就愈大,教学效果就愈高. 可是有的教师对认真备课认识不足,往往对 ...
  • 20**年上大金融考研431科目涉及什么资料
    2018上大金融考研431科目涉及什么资 料 本文系统介绍上大金融专硕复试分数线,上大金融专硕考研难度,上大金融专硕就业,上大金融专硕考研学费,上大金融专硕考研辅导,上大金融专硕考研参考书六大方面的问题,凯程上大金融专硕老师给大家详细讲解. ...
  • 法硕专业课和基础课主观题的答题技巧与模式
    <法硕各类主观题的答题技巧与模式 > 在指导大家如何解答主观题之前,我要特别强调:大家可以上网搜索法硕历年真题与答案(<永平法硕笔记>中也含此部分,更含我对真题使用技巧和方法以及注意事项的指导),但目的不在于所谓的& ...
  • 一年级知识点大全
    小学六个年级语文学习方法 语文是一门源于生活的科目,学习好语文需要同学们的不断积累,这个过程是非常重要的,不同年级的学生也有着不同的学习内容和学习方法.小学的同学快来看看小编给你们汇集的<小学六个年级语文学习方法>吧,相信对你们 ...