汇编语言期末复习题大全

时间:2024.4.5

汇编语言期末复习题

DX:单项选择题  DU:多项选择题    TK:填空题    MC:名词解释   

v JD:简答题      CXFX:程序分析题    CXTK:程序填空题  BC:编程题

第1章:基础知识

1、在汇编语言程序的开发过程中使用宏功能的顺序是(     C    )。     DX

A、宏定义,宏调用                      B、宏定义,宏展开

C、宏定义,宏调用,宏展开              D、宏定义,宏展开,宏调用

2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(     B    )。     DX

A、名字项      B、操作项       C、操作数项     D、注释项

3、可屏蔽中断就是它的请求是否被CPU响应要受 (  IF   )的控制。    DX

4、使用LINK连接命令,执行后可生成文件的扩展名为(   EXE  )。    DX

5、在寄存器间接寻址中,如果指令中指定的寄存器为BP,则操作数在 堆栈  段中,段地址在   SS  寄存器中。    TK

6、注释项用于说明程序段或是一条和几条指令的功能,一般用   ;(或分号)    表示注释的开始。    TK

7、DOS系统功能调用方式为:(1)置入口参数;(2)中断程序编号送  AH   寄存器后执行INT  21H。    TK

8、通常主程序和子程序间参数传送的方法有三种: 用寄存器传递 用存储单元传递用堆栈传递(顺序可调换)。    TK

9、   中断     是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为     中断源      。    TK

10、在字符串操作指令中,DS∶    SI      指向源串,ES∶      DI     指向目的串。    TK

11、计算机系统通过   接口      与外围设备通信。    TK

12、键盘I/O、显示I/O和打印I/O分别对应     16H       10H        17H            号中断。    TK

13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。每个字的第一个字节为显示字符的     ASCII码      ,第二个字节为显示字符的     属性      。    TK

14、简述上机运行汇编语言程序的过程。    JD

答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。

15、简述程序中指令和伪指令的区别。    JD

答:能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。

伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。

16、十六进制数88H,可表示成下面几种形式,请找出错误的表示(④ )。    DX

   ① 无符号十进制数136

   ② 带符号十进制数-120

   ③ 压缩型BCD码十进制数88

   ④ 8位二进制数-8的补码表示

17、指令指针寄存器是(IP )。   DX

18、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B)    DX

  A.名字的第一个字符可以是大写英文字母及小写英文字母

  B.名字的第一个字符可以是字母、数字及、@、_

  C.名字的有效长度≤31个字符

  D.在名字中不允许出现$

19、CS寄存器属于(  段寄存器   )。     DX

20、已知物理地址(371F0H)=12H,(371F1H)=34H,(371F2H)=56H,如从地址371F0H中取出一个字的内容是(  3412H   )。    DX

21、一个有16个字的数据区,它的起始地址是70A0H∶DDF6H,则这个数据区最末一个字单元的物理地址是(  7E814H   )。    DX

22、简述上机运行汇编语言程序的过程。    JD   答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。

第2章:8086/8088的寻址方式和指令系统

1、下列指令属于基址加变址寻址方式的是( MOV  DX,DS:[BP][SI] )。    DX

2、当程序顺序执行时,每取一条指令语句,IP指针增加的值是(  D   )。    DX

   A.1           B.2          C.3      D.由指令长度决定的

3、下列属于合法的指令是(   D  )    DX

   A.MOV  DS,ES    B.MOV  [SI],[DI]     C.MOV  AX,BL    D.MOV  [DI],BL

4、若AX=349DH,CX=000FH。则执行指令AND  AX,CX后,AX的值是(   000DH  )。    DX

5、设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(   85B92H    )   DX

6、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(     B    )      DX

A、AX,BX,CX,DX  B、BX,BP,SI,DI   C、SP,IP,BP,DX      D、CS,DS,ES,SS

7、对寄存器AX的内容乘以4的正确指令序列是(    SHL AX,1     SHL,AX,1     )。     DX

8、执行INC指令除对SF、ZF有影响外,还要影响的标志位是(     OF,AF,PF    )。     DX

9、设DH=10H,执行NEG DH指令后,正确的结果是(    DH=0F0H    CF=1     )。     DX

10、下列传送指令中有语法错误的是(    A     )。     DX

A、MOV CS,AX    B、MOV DS,AX   C、MOV SS,AX   D、MOV ES,AX

11、下面指令执行后,改变AL寄存器内容的指令是(    D     )。     DX

A、TEST  AL,02H    B、OR  AL,AL   C、CMP  AL,BL    D、AND  AL,BL

12、执行除法指令后,影响的标志位是(    AF,CF,OF,PF,SF,ZF都不确定     )。     DX

13、执行下面指令序列后,结果是(    AX=0FF82H     )。     DX

MOV  AL,82H

CBW

14、与MOV  BX,OFFSET VAR指令完全等效的指令是(    D     )。     DX

A、MOV  BX,VAR   B、LDS  BX,VAR   C、LES  BX,VAR D、LEA  BX,VAR

15、在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是(    PARA )。     DX

16、MOV  SP,3210H

PUSH  AX     执行上述指令序列后,SP寄存器的值是(     320EH    )。     DX

17、BUF  DW  10H DUP(3 DUP(2,10H),3,5)

上述语句汇编后,为变量BUF分配的存储单元字节数是(     100H    )。     DX

18、MOV  AH,7896H

    ADD  AL,AH

   上述指令执行后,标志位CF和OF的值是(  CF=1,OF=0   )。    DX

19、完成将带符号数AX的内容除以2的正确指令是( SHR  AX,1 )。    DX

20、在汇编语言程序中,对END语句的叙述正确的是(  C   )。    DX

   A.END语句是一可执行语句        B.END语句表示程序执行到此结束

   C.END语句表示源程序到此结束    D.END语句在汇编后要产生机器码

21、已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(数据段中偏移量为3236H的字节)中。     DX

22、下面指令序列执行后完成的运算,正确的算术表达式应是(y=x2-1)。     DX

    MOV AL,BYTE PTR X

    SHL AL,1

    DEC AL

    MOV BYTE PTR Y,AL 

23、已知(AX)=1234H,执行下述三条指令后,(AX)= (0000H)。     DX

    MOV BX,AX

    NEG BX

    ADD AX,BX

  A.1234H  B.0EDCCH  C.6DCCH  D.

24、将DX的内容除以2,正确的指令是(C)。     DX

A.DIV 2  B.DIV DX,2  C.SAR DX,1  D.SHL DX,1

25、有如下指令序列:    DX

   ORG  40H

   DA1  DW  0AB12H,8574H

   ……

   MOV  AX,DA1

   MOV  BX,OFFSET  DA1

  上述指令执行后,寄存器AX和BX的值分别为(  AB12H,40H   )。

26、下列数值表达式和地址表达式中,错误的是(  D   )。    DX

   A.MOV  AL,8*14+4              B.MOV  SI,OFFSET  BUF+13

   C.MOV  CX,NUM2-NUM1        D.MOV  CX,NUM2+NUM1

27、数据段定义如下:    DX

   X1   DB  10H,50,1

   X2   DW  10H,20,3

   X3   DD  ?

   COUNT   EQU  X3-X1

  变量COUNT的值是(  9   )。

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

A、INC CX  JZ MINUS                   B、SUB CX,OFFFFH  JZ MINUS

C、AND CX,OFFFFH  JZ MINUS       D、XOR CX,OFFFFH  JZ MINUS

29、AL和VAR字节单元中分别存放一个带符号数,执行CMP AL,VAR时,如AL>VAR,那么溢出位和符号位 的关系是(    OF=SF     )。     DX

30、下面是关于汇编语言程序中使用RET的描述,不正确的是(  C   )。    DX

   A.每一个子程序中允许有多条RET指令。  B.每一个子程序结束之前一定要有一条RET指令。

   C.每一个子程序中只允许有一条RET指令。 D.以过程形式表示的代码段,一定有RET指令存在。

31、在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是(  CX=0或ZF=0   )。    DX

32、用MOV指令将十进制64以组合型BCD码格式送入AX,正确使用的指令是(   MOV  AX,0604H  )。    DX

33、重复前缀指令REP的重复次数由      CX        决定。    TK

34、DR1  DB  10H,30H

   DR2  DW  10H  DUP(0,2  DUP(2))

    ……

   MOV  BL,LENGTH  DR1

   MOV  CL,LENGTH  DR2  请问指令执行后,BL和CL的值分别为     1              10H      。    TK

35、设(SP)=100H,(AX)=0FFFFH

    STC

    PUSH  AX

    ADC  AX,0

    PUSH  AX

    POP  BX    上述程序段运行后,(BX)=     0       ,(SP)=      0FEH        。  CXFX

36、假设数据段定义如下: 

    DA1  DW  ’C’,’D’

    DA2  DB  18  DUP(?)

    DA3  DW  $-DA2

       ……

    MOV  BX,DA3

MOV  AX,DA1

上述指令执行后,BX寄存器中的内容是12H(18),AH寄存器中的内容是 00H,AL寄存器中的内容是43H 。CXFX    

37、现有如下数据段

    DATA     SEGMENT

    ARRAY1  DB  1,26,‘3456’

    ARRAY2  DW  7,89H,10

    VAL      EQU  ARRAY2-ARRAY1

    DATA     ENDS

  请问:该数据段已占有   12(0CH)        字节的存储空间。     CXFX

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

   ① 表示结果中含1的个数为偶数  ② 表示结果中含1的个数为奇数

    ③ 表示该数为偶数   ④ 表示结果中低八位含1的个数为偶数

39、AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是( C )    DX

  A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位

  B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0

  C.指令AND AX,OFH执行后,分离出AL低四位

  D.NOT AX,执行后,将AX清0

40、完成对CL寄存器的内容乘以4的正确操作是( C  )    DX

  A.ROL CL,1        B.MUL 4

    ROL CL,1

  C.SHL CL,1        D.MOV CL,2

   SHL CL,1             SHL CL,CL

41、下面各传送指令中,正确的是( C  )    DX

  A.MOV [DI],[SI]  B.MOV[DX+DI],AL    C.MOV WORD PTR [BX],0100H D.MOV AL,BX

42、要实现使BETA的值为56,应采用语句为( BETA EQU 56  )    DX

43、REPZ CMPSW指令,重复执行的终止条件是( CX=0或ZF=0  )    DX

44、下面程序段执行后,AL中的内容是( 21H  )    DX

  MOV AX,8833H

  ADD AL,AH

  DAA

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

   ① MOV AL,00H  ② AND AL,00H  ③ XOR AL,AL  ④ SUB AL,AL

46、下列指令执行后总是使CF=0,OF=0的是( AND)。   DX

47、完成同指令XCHG AX,BX相同功能的指令或指令序列是(④ )。   DX

   ① MOV AX,BX  ② MOV BX,AX

   ③ PUSH AX

     POP BX

④ MOV CX,AX

    MOV AX,BX

    MOV BX,CX

48、设AH=0,AL=06H,BL=09H,执行指令

   ADD AL,BL              AAA

   之后,其结果应是(AH=01,AL=05 )。   DX

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

50、在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是(CX=0或ZF=0 )。   DX

51、下面指令中,合理而有意义的指令是(④ )。   DX

   ① REP LODSB  ② REP SCASB  ③ REP CMPSB  ④ REP MOVSB

52、在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D  )    DX

  A.STOSW  B.LODSW   C.SCASW      D.CMPSW

53、AL=0AH,下列指令执行后能使AL=05H的是( C  )    DX

  A.NOT AL  B.AND AL,0FH  C.XOR AL,0FH   D.OR AL,0FH

54、DA1  DW‘AB’,‘CD’,‘EF’,‘GH’

     ┇

    MOV AX,DA1+3

  指令执行后AX中的内容是( ‘FC’  )。    DX

55、在汇编语言程序中,对END语句的叙述正确的是( ③)。   DX

   ① END语句是一可执行语句   ② END语句表示程序执行到此结束

   ③ END语句表示源程序到此结束   ④ END语句在汇编后要产生机器码

56、下面的数据传送指令中,错误的操作是(④ )。   DX

   ① MOV SS:[BX+DI],1000H   ② MOV DX,1000H  ③ MOV WORD PTR[BX],1000H  ④ MOV DS,2000H

57、下面指令执行后,变量DAB中的内容是(0F5H )。   DX

   DAW DW2A05H

   DAB DB 0FAH

   :

   MOV AL,BYTE PRT DAW

   SUB DAB,AL

58、执行下列指令后,正确的结果是(② )。   DX

   MOV AL,100

   MOV BL,-2

   ① AL=100H

     BL=02H

   ② AL=64H

     BL=0FEH

   ③ AL=64H

     BL=82H

   ④ AL=100H

     BL=0FEH

59、设数据段中已有:

   DA1 DB 12H,34H

   DA2 DW 56H,78H

   下面有语法错误的语句是(② )。   DX

 ① ADR1 DW DA1  ② MOV DA1+1,AX ③ MOV BYTE PTR DA2+1,AL  ④ MOV WORD PTR DA1+1,AX

60、 DATA SEGMENT

   TA1 DW 0102H,0304H,0506H

   TA2 DB 02H,03H,04H

   :

   MOV BX,DS:[0006H]

   AND BX,0FFH

   AND BH,[BX]

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

61、若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,(SI+COUNT)中,源操作数的有效地址EA为___20A8H _____,其物理地址为___11488H _____。    TK

62、如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是____ IP____,而后两个字节存放的是____ CS____。    TK

63、在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是___ STOS____或___ CMP__才有实际意义。    TK

64、已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。     JD

(1)MOV AL,[BX]

 21357H

(2)MOV CS:[BX+DI],AH

43357H

65、

0P1 DB 1,2

 0P2 DW 3412H,5678H

 MOV AX,OP1+1;字单元(OP1+1) AX

 MOV BL,OP2+1;字节单元(OP2+1) BL

 上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。     JD

MOV AX,WORD PTR(OP1+1)

    MOV BL,BYTE PTR(OP2+1)

66、下列语句在存储器中分别为变量分配多少字节?     JD

 (1)AD2 DW 10 DUP(?),10  22

 (2)AD3 DD 100 DUP(?) 400

67、简述下面两条指令分别是什么语法错误?     JD

 MOV [BX],[SI]

 MOV AX,DL

MOV指令不能在两个存储器操作数之间进行;

     操作数类型不匹配。

68、在指令系统中,段内、段间返回均为RET指令。试回答:    JD

(1)执行段内返回RET指令时,执行的操作是:栈顶内容→IP,SP+2→SP  

(2)执行段间返回RET指令时,执行的操作是:①栈顶内容→IP,SP+2→SP  ②栈顶内容→CS,SP+2→SP  

69、

ARY DW 10 DUP(?)

MOV AL,TYPE ARY

MOV BL,LENGTH ARY

MOV CL,SIZE ARY

上述MOV指令序列执行后的结果是什么?    JD  

AL=2  

BL=10  

CL=20  

70、设某数据段:       JD

DATA SEGMENT

ORG 20H

NUM1=8

NUM2=NUM1+10H

DA1 DB 'COMPUTER'

DB 0AH,0DH

COUNT EQU $-DA1

DA2 DW'CO','MP','UT','ER'

DATA ENDS

试回答:(1)DA1的偏移地址是: 20H  (2)COUNT的值是 0AH  (3)DA2+5字节单元的内容是 ‘U’的ASCII码_

71、已知

AX=0FF60H,CF=1           

MOV DX,96

XOR DH,0FFH

SBB AX,DX

执行上述指令序列后,AX=_________0__________,CF=______0__________。    CXFX

72、设寄存器AL,BL,CL中内容均为76H,

XOR AL,0FH

AND BL,0FH

OR CL,0FH

执行上述指令序列后,AL=______79H ___,BL=__06H ___CL=_7FH___。          CXFX

73、已知

AX=0A33AH,DX=0F0F0H

AND AH,DL

XOR AL,DH

NEG AH

NOT AL

执行上述指令序列后,AH=____60H____,AL=_____35H_。    CXFX

74、假定(DX)=10111001B,(CL)=0.3,(CF)=1,试确定下列各条指令单独执行后,DX中的值。       JD

(1)SHR DX,1   (2)RCR DL,1    (3)RCL DX,CL     答:(1) 005CH (2) 00DCH (3) 05CCH

75、写出完成下述功能的程序段:     JD

 (1)传送25H到AL寄存器 (2)将AL的内容乘以2 (3)传送15H到BL寄存器(4)AL的内容乘以BL的内容

    并请写出最后(AX)=?

答:(1)MOV AL, 25H (2)SHL AL, 1 (3)MOV BL, 15H(4)MUL BL  最后,(AX)=612H =1554

76、写一程序段,求双字长数DX∶bX的相反数。     JD

答: NEG DX

    NEG AX

    SBB DX, 0

77、在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如:         JD

   PUSH AX\

   PUSH BX \ 保护现场

   PUSH CX /

   PUSH DX/

   :

   }恢复现场

   试写出恢复现场时的指令序列。

   答:

POP DX 

   POP CX

   POP BX

   POP AX

78、完成下列操作,选用什么指令:    JD

(1)将AX的内容,减去0520H,和上次运算的借位; (2)将变量名TABL的段地址送AX;

答:(1)SBB AX,0520H(2分) (2)MOV AX,SEG TABL(2分)

79、D1 DB 20H DUP(?)

   D2 DW D1    请写出用一条指令实现取D1的偏移地址=>SI中的三种方法。    JD

  答: ① LEA SI,D1  ② MOV SI,OFFSET D1  ③ MOV SI,D2

80、A DW 1234H

   B DW 5678H

   :

   PUSH A

   PUSH B

   POP A

   POP B

   试回答:    CXFX

①上述程序段执行后(A)=__________,(B)=_____

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

答:

①(A)=5678H(2分)(B)=1234H(2分)

   ②SP=2000H(2分)

81、现有下列程序段:    CXFX

   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_

82、分析下面程序段,    CXFX

   MOV AL,200

   SAR AL,1

   MOV BL,AL

   MOV CL,2

   SAR AL,CL

   ADD AL,BL    试问程序段执行后(BL)=__0E4H_(AL)=__0DDH___

83、DA3 EQU WORD PTR DA4

DA4 DB 0ABH,89H

SHR DA3,1

MOV DX,DA3

SHL DA4,1

MOV CX,DA3  上述程序段运行后,CX=___44AAH___,DX=__44D5H___。    CXFX

84、设(SP)=100H,(AX)=0FFFFH

    STC

    PUSH  AX

    ADC  AX,0

    PUSH  AX

    POP  BX  上述程序段运行后,(BX)=    0        ,(SP)=      0FEH        。    CXFX

85、STRING DB ‘ABCDEFGHIJ'

   :

   MOV AH,01 ;从键盘输入字符1~9

   INT 21H

   AND AL,0FH

   DEC AL

   XOR AH,AH

   MOV BX,OFFSET STRING

   ADD BX,AX

   MOV BL,[BX]

   MOV AH,02H ;显示输出

   INT 21H

   :

   试回答:

(1)上述程序段的功能是什么?    CXFX

  根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。(2)如从键盘输入字符‘4',程序段有什么结果?

显示器显示字符‘D’

86、已知:

BX=4567H

   NEG BX

   INC BX

   NEG BX

   DEC BX              程序段执行后,BX=____4565H___,CF=___1_____。       CXFX

87、已知数据段中定义

   DAT1 DB  12H,34H,56H,78H

    MOV CX,0

    MOV AX,WORD PTR DAT1

    MOV CL,DAT1+3      当程序段执行完后AX=___3412H____,CX=__0078H_____。       CXFX

88、DA1  DB 83H,72H,61H,94H,5AH

    ┇

     MOV CX,WORD PTR DA1

     AND CX,0FH

     MOV AL,DA1+3

     SHL AL,CL          上述指令序列执行后,AL=__0A0H____,CL=__03H____。          CXFX

89、现有如下程序段:       CXFX

    DATA SEGMENT DA3 EQU 1234H

    ORG 0020H DA4 EQU $-DA2

    DA1 DW 12H,23H DA5 DB 31H,32H

    DA2 DB 11H,21H DATA ENDS

 请回答:(1)该程序段已占有的存储字节数是多少?(2)符号名DA4的值是多少?符号名DA5的值是多少?

答:(1) 该程序段已占有的存储字节数是8个字节。(2) 符号名DA4的值为2,符号名DA5的值是0026H。

90、执行下列程序段后,回答问题。     CXFX

     ORG 1221H MOV BX,OFFSET NUM

    NUM DW 12H MOV CL,BYTE PTR NUM+1

    … MOV CH,TYPE NUM

    MOV AX,NUM HLT

    请问:(AX)=______,(BX)=______,(CX)=______。

答:(AX)=0012H (BX)=1221H (CX)=0200H

91、执行下列指令后AX、BX寄存器的内容?     CXFX

MOV SI,10H

MOV AX,1234H

MOV [SI+12H],AX

LEA BX,[SI]

MOV [SI+14H],BX

答:AX为1234H,BX为22H

LES BX,DWORD PTR [SI+12H]

92、试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。     BC

LEA DI,DA_BY

        MOV CX,32

        MOV AL,‘Y’

        CLD

        REP STOSB

93、在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。    BC

DATA SEGMENT

BUF1 DW-56,24,54,-1,89,-8……

BUF2 DW45,-23,124,345,-265,……

SUM DW10DUP(0)

DATA ENDS

94、编制程序段实现:将AX寄存器中的16位二进制数分成四组,每组4位,然后把这4组数分别放在AL、BL、CL、和DL中。    BC

MOV BH,AL

MOV CH,AH

MOV AL,AH

AND AL,0F0H

MOV BL,AH

AND BL,0FH

MOV CL,BH

AND CL,0F0H

MOV DL,BH

AND DL,0FH

95、在NUMW单元存放有一个0-65535范围内的整数,将该数除以500,商和余数分别存入QU1和REM单元,请在空行处各填上一条指令完善该程序。     CXTK

   ┇

 MOV AX,NUMW

 ____ MOV BX,500_________

 XOR DX,DX

 DIV BX

 MOV QUI,AX

____ MOV REM,DX _________

96、已知数据段中定义

DAT1 DB  12H,34H,56H,78H

    MOV CX,0

    MOV AX,WORD PTR DAT1

MOV CL,DAT1+3  

当程序段执行完后AX=___3412H _____,CX=___0078H _____。     CXFX

97、DA1  DB 83H,72H,61H,94H,5AH

    ┇

     MOV CX,WORD PTR DA1

     AND CX,0FH

     MOV AL,DA1+3

     SHL AL,CL

  上述指令序列执行后,AL=___0A0H ____,CL=___03H ____。     CXFX

98、DA3 EQU WORD PTR DA4

DA4 DB 0ABH,89H

SHR DA3,1

MOV DX,DA3

SHL DA4,1

MOV CX,DA3

上述程序段运行后,CX=____44AAH _____,DX=_____44D5H _______。     CXFX

99、编制完整程序实现下列算式:W=X+Y+36-Z。设X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。      BC

DATA SEGMENT

X DD …

Y DD …

Z DD …

W DD …

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AX,X

ADD AX,Y

MOV BX,X+2

ADC BX,Y+2

ADD AX,36

ADC BX,0

SUB AX,Z

SBB BX,Z+2

MOV W,AX

MOV W+2,BX

CODE ENDS

END START

3:8086汇编语言程序格式

1、指令JMP FAR PTR DONE属于(段间转移直接寻址)。     DX

2、下列叙述正确的是(C)。     DX

  A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令

  B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令

  C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令

  D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令

3、一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是(12C59H)。     DX

4、某存储单元的物理地址是12345H,可以作为它的段地址有( D  )    DX

  A.2345H        B.12345H

  C.12340H       D.1234H

5、在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是(进位值在CF中,校正后根据CF内容再加在AH中)    DX

6、执行后使BX=0的同时也使CF=0,OF=0的指令是( XOR BX,BX  )    DX

7、在执行下列指令时,需要使用段寄存器DS的指令是( D  )    DX

  A.STOSW        B.ADD AL,CL

  C.NEG BX       D.INC DA[BX]

8、无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是( OR BH,01H  )    DX

9、比较两个带符号的数A、B,当A=B时程序转移,测试的条件为( ZF=1  )    DX

10、使用DOS系统功能调用时,使用的软中断指令是( B  )    DX

  A.INT 21      B.INT 10H

C.INT 16H     D.INT 21H

11、十六进制数0FFF8H表示的十进制正数为____+65528____,表示的十进制负数为____-32760____。TK

12、CPU的标志寄存器中标志位,可以分为两大类,其中一类称为___状态_____标志位,另一类称为____控制____标志位。    TK

13、当标志位___CF___=1时表示无符号数运算产生溢出,而当标志位__ OF____=1是表示带符号数运算产生溢出。    TK

14、在程序执行过程中,IP寄存器中始终保存的是 (下一条指令的首地址)。     DX

15、PSW寄存器中共有___6___位条件状态位,有___3___位控制状态位。()。     DX

16、串指令中的目的操作数地址是由___ ES:[DI]___提供。

17、8086CPU在基址加变址的寻址方式中,变址寄存器可以为(SI或DI)。     DX

18、什么叫寻址方式?常用的寻址方式有哪些?      JD

答:寻址方式是指寻找指令中操作数所在地址的方法。

常用的寻址方式有:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、基址加变址、隐含寻址等。

第4章:顺序程序设计

1、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(    D     )。

A、CMP     B、SUB      C、AND      D、MOV

第5章:分支程序设计

1、检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( JC LOP1  )    DX

2、下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为( )。   DX

   TEST BH,01H

   __JNE_______K1

3、测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( ②)。   DX

   ① TEST BL,4FH

    JZ NEXT

   ② XOR BL,4FH

    JZ NEXT

   ③ AND BL,4FH

    JZ NEXT

   ④ OR BL,4FH

    JZ NEXT

4、当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是( JNLE)。   DX

5、  

MOV BL,64H

     MOV CL,03H

     XOR AX,AX

 AGAIN:ADD AL,BL

    ADC AH,0

    DEC CL

    JNZ AGAIN

 问:(1)该程序段完成的功能是:将AX内容乘3送BX中           CXFX

  (2)AX=___012CH_____。

6、

MOV DL,AL

   NOT DL

   TEST DL,04H

   JE NEXT

        ┇

 NEXT:…

   若上述程序段执行时产生分支,说明AL中的数第几位一定为1?程序段执行后CF是多少?     CXFX

第2位;CF=0

7、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。    CXTK

   TEST AX,8000H

   __JE K1或JZ K1_________

   MOV PLW,BX

   JMP DONE

   K1:__MOV PLW,A___________

   DONE:

8、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。    CXTK

___ XOR AH,AL____

AND AH,08H

____ JE ZERO_____

MOV AH,OFFH

JMP NEXT

ZERO:MOV AH,0

NEXT:……

9、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。    CXTK

BUF DB 5,6,7,58H,62,45H,127,……

COUNT EQU $-BUF

MAX DB?

MON BX,OFFSET BUF

MOV CX,COUNT-1

MOV AL,[BX]

LOP1:INC BX

____ CMP AL,[BX]_______ __

JAE NEXT

MOV AL,[BX]

NEXT:DEC CX

_____ JNZ LOP1___________

MOV MAX,AL

10、编程序段计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首址,i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)    CX

MOV AX,0

   MOV BX,OFFSET BUF

   MOV CX,20

   LOP:ADD AX,[BX]

   INC BX

   INC BX

   LOOP LOP

   MOV SUM,AX

11、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。   CX

答: BEGIN:MOV AH,1

    INT 21H

    CMP AL,’a’

    JB STOP

    CMP AL,’z’

    JA STOP

    SUB AL,20H

    MOV DL,AL

    MOV AH,2

    INT 21H

    JMP BEGIN

    STOP:RET

 12、

AND AL,AL

   JZ BRCH1

   RCR AL,1

   JZ BRCH2

   RCL AL,1

   INC AL

   JZ BRCH3

   :

   上述程序运行后,试回答:    CXFX

   (1)当(AL)=__0________时,程序转向BRCH1

   (2)当(AL)=__1________时,程序转向BRCH2

   (3)当(AL)=__-1________时,程序转向BRCH3

13、下面程序的功能是什么?    CXFX

MOV CH,4

LAB:MOV CL,4

ROL BX,CL

MOV DL,BL

AND DL,0FH

ADD DL,30H

CMP DL,3AH

JL PRINT

ADD DL,7

PRINT:MOV AH,02

INT 21H

DEC CH

JNZ LAB

显示输出BX寄存器里的内容

14、阅读如下程序:     CXFX

    ADRR DB XXH,XXH,……,XXH CMP ADRR[BX],0

    NUM EQU $ -ADRR LOOPZ DON

    RETT DB? JNZ NEXT

    … MOV BL,OFFH

    MOV CX,NUM NEXT:MOV RETT,BL

    MOV BX,-1 HLT

    DON:INC BX

请问:(1)该程序完成的功能是什么?(2)程序执行后指出RETT字节单元中的内容是什么?

答:(1) 在以ADRR为起始地址的数组中,查找第一个非0数据。

   (2) 若找到则将第一个非0数据在数组中的偏移量送入RETT单元中;若无非0数据,则将OFFH送入RETT单元中。

15、现有一子程序:     CXFX

    SUB1 PROC PLUS:TEST BL,80H

    TEST AL,80H JE EXITO

    JE PLUS XCHANGE:XCHG AL,BL

      TEST BL,80H EXITO:RET

    JNE EXITO SUB1 ENDP

    JMP XCHANGE

    试回答:

(1)子程序的功能是什么?

    (2)若调用子程序前AL=9AH,BL=77H,则返回主程序时,AL=______,BL=______。

答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。

    (2) AL=77H, BL=9AH

16、阅读程序段:     CXFX

    BLOCK DB 20H,1FH,08H,81H,OFFH… LOP1:CMP AL,[SI+1]

    RESULT DB? JNG NEXT

    … MOV AL,[SI+1]

    START:LEA SI,BLOCK NEXT:INC SI

    MOV CX,[SI] LOOP LOP1

    INC SI MOV RESULT,AL

    MOV AL,[SI] HLT

    请问:(1)该程序完成的功能是什么?(2)该程序循环的次数是多少?

答:(1) 该程序完成的功能是从20H(32)个有符号数中找出最小的数送入RESULT单元中。

    (2) 该程序的循环次数是1FH(31)。

17、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。     CXFX

    ORG 100H

    BLOK DW X1,X2,…,XN

    COUNT EQU($-BLOLOK)/2

    RESULT DW COUNT,?

    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

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

    RESULT+2字存储单元的内容=______

    BX=______

    程序循环次数=______

答:  RESULT+2字存储单元的内容是MAX(X1, X2, … XN)

     BX= 100H + 2×(COUNT-1)

     程序循环次数= COUNT

18、下面程序的功能是什么?     CXFX

MOV AX,X

CMP AX,Y

JGE LAB

XCHG AX,Y

LAB:MOV X,AX   答:选择X,Y中的较大值存入X中

19、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。     CXTK

 STRING DB‘COMPUTER’,‘$’

 ┇

 MOV BX,0FFSET STRING

 LOP:MOV DL,[BX]

    MOV AH,02H

    INT 21H

    _____ INC BX_______________

    _____CMP [BX],24H________

JNE LOP

20下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令.CXTK

____ XOR AH,AL_______________

AND AH,08H

_____ JE ZERO______________

MOV AH,OFFH

JMP NEXT

ZERO:MOV AH,0

NEXT:……

21、在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。请在程序中的空格处填入适当指令使其完整。     CXTK

    LEA BX,TABLE     (2)    

    MOV CX,10 JC END0

    MOV SUM,AX DON:INC BX

    MEXT:    (1)     

     (3)     

    ADC AH,0 ENDO:HLT

    JNC DON  答: (1) ADD AL, [BX] (2) MOV AX, SUM (3) LOOP NEXT

22、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。  BC

答: BEGIN:MOV AH,1

    INT 21H

    CMP AL,’a’

    JB STOP

    CMP AL,’z’

    JA STOP

    SUB AL,20H

    MOV DL,AL

    MOV AH,2

    INT 21H

    JMP BEGIN

    STOP:RET

23、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。      BC

    DATA  SEGMENT

    DA1  DW  XXXX

    DATA ENDS

答:

CODE SEGMENT

          ASSUME CS:CODE,DS:DATA

       START: MOV  AX,DATA

              MOV  DS,AX

              LEA  SI,DA1

              MOV  CX,16

              XOR BL,BL

       AGAIN: MOV  AL,[SI]

              HL AL,1

              JC NEXT

              INC BL

        NEXT:INC SI

              LOOP AGAIN

              TEST BL,01H

              JNE  L1

              CLC

              JMP DONE

           L1: STC

         DONE: MOV AH,4CH

               INT 21H

         CODE ENDS

              END START

24、编定程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符是"Y",则转向YES程序段;如字符是"N",则转向NO程序段;如是其他字符,则转向DOS功能调用,重新输入字符。(考生勿需写出源程序格式,只需写出与试题要求有关的指令序列)  (YES和NO分别是两程序段入口处的标号)      BC

KEY:MOV AH,1

INT 21H

CMP AL,‘Y’

JE YES

CMP AL,‘N’

JE NO

JMP KEY

答案:

DATA SEGMENT

BUF1 DW -56,24,54,-1,89,-8,----

BUF2 DW 45,-23,124,345,-265,----

SUM DW 10 DUP(0)

DATA ENDS

STACK1 SEGMENT PARA STACK

DW 20H DUP(0)

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK1

START:MOV AX,DATA

MOV DS,AX

MOV CX,10

LEA SI,BUF1

LEA DI,BUF2

LEA BX,SUM

NEXT:MOV AX,[SI]

MOV DX,[DI]

TEST AX,8000H

JE TDX

NEG AX

TDX:TEST DX,8000H

JE ADDS

NEG DX

ADDS:ADD AX,DX

MOV [BX],AX

ADD SI,2

ADD DI,2

ADD BX,2

LOOP NEXT

MOV AH,4CH

INT 21H

CODE ENDS

END START

25、

      LEA  SI,STR

MOV  AL,ODH

XOR  CX,CX

GOON:CMP  AL,[SI]

JZ  NEXT

INC  CX

INC  SI

JMP  GOON

NEXT:MOV  COUNT,CX

字节变量STR中存放着一个字符串‘abcdefGHIJK’,以0DH为结束标志,上述指令序列完成的功能是     求字符串长度         ,执行以上指令后字变量COUNT=   11    。     CXFX

26、下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。请在空白处填写合适的指令。      CXTK

     DATA    SEGMENT

     ARRAY  DW  23ABH,1570H,567,1765H,46,5210H

     COUNT  EQU  ($-ARRAY)/2

    DA1     DB  ?

    DA2     DB  ?

    DATA    ENDS

           ……

           LEA  SI,ARRAY

           MOV  CX,COUNT

    LOP1:MOV  AX,[SI]

                TEST  AX,0001H    

           JZ  LOP2

           INC  BL

           JMP  LOP3

    LOP2:INC  BH

    LOP3:    ADD  SI,2        

           DEC  CX

           JNZ  LOP1

           MOV  DA1,BL

           MOV  DA2,BH

                                    -1  x<0

27、编写计算下面函数值的程序   y=    0   x=0

                                    1   x>0

其中,输入数据x和输出数据y均在数据段中定义,且皆为字节变量。   BC

DATA  SEGMENT

X     DB  45H

Y     DB  ?

DATA  ENDS            

;

CODE  SEGMENT

      ASSUME CS:CODE,DS:DATA    

START:MOV AX,DATA

      MOV DS,AX                 

      MOV AL,XXX

      MOV AH,0

      CMP AL,0

      JGE NEXT1                 

      MOV BL,-1

      JMP OVER                  

NEXT1:CMP AL,0

      JE  NEXT2                 

      MOV BL,1

      JMP OVER                  

NEXT2:MOV BL,0

OVER: MOV ZZZ,BL

      MOV AH,4CH                

      INT 21H

CODE  ENDS

      END  START                

28、写一个把字符串中的大写字母改写为小写字母的子程序(近过程)。设字符串以0为结束标志。     BC

    ;子程序名:STRLWR  ;功    能:把字符串中的所有大写字母改写为小写字母

    ;入口参数:DS∶BX=存放改写所需字符串的缓冲区首地址 ;出口参数:无

STRLWR  PROC                  

           PUSH  AX

           PUSH  SI            

           MOV  SI,BX         

    AGAIN: MOV  AL,[SI]       

           OR   AL,AL

           JZ   OK             

           CMP  AL,’A’

           JB   NEXT

           CMP  AL,’Z’

           JA   NEXT          

           OR   AL,20H(或者ADD  AL,30H)  

           MOV  [SI],AL         

     NEXT: INC  SI             

           JMP  AGAIN          

       OK: POP  SI

           POP  AX            

           RET                 

   STRLWR  ENDP           

6循环程序设计
1、循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是(CX≠0且ZF=0)    DX

2、循环指令LOOPNZ终止循环的条件是(     CX=0,或ZF=1    )。     DX

3、检查BUF的内容是否为正偶数,如是正偶数,则0TAL。下面程序段正确的是(   C   )。DX


A、MOV AL,BUF

JS K1

SHR AL,1

JNC K1

MOV AL,0

K1:……

B、MOV AL,BUF

AND AL,11

JNZ K2

MOV AL,0

K2:……



C、MOV AL,BUF

TEST AL,81H

JNZ K3

MOV AL,0

K3:……

4、下列描述中,执行循环的次数最多的情况是(  A   )。    DX

   A.MOV  CX,0                             B.MOV  CX,1

      LOP:LOOP  LOP                            LOP:LOOP  LOP

   C.MOV  CX,0FFFFH                       D.MOV  CX,256

      LOP:LOOP  LOP                            LOP:LOOP  LOP

5、

DATA SEGMENT

S9 DB0,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]

MOV [SI],AL

ADD SI,2

ADD DI,2

LOOP LOP

上述程序段运行后,S9开始的10个字节存储单元内容是什么?    CXFX

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

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

   ① SHL AX,2

     ROL DX,2

   ② RCL AX,2

     SHL DX,2

   ③ MOV CX,2

     LOP:SHL AX,1

     RCL DX,1

     LOOP LOP

   ④ SHL AX,1

     SHL AX,1

     RCL DX,1

     RCL DX,1

7、在下列指令中,   D   指令的执行会影响条件码中的CF位。      DX

  A.JMP NEXT  B.JC NEXT  C.INC BX  D.SHL AX,1

8、下列指令执行时出错的是(A)。     DX

  A.ADD BUF1,BUF2  B.JMP DWORD PTR DAT [BX] C.MOV AX,[BX+DI] NUM D.TEST AL,08H

9、在下列指令的表示中,不正确的是(C)。     DX

 A.MOV AL,[BX+SI]  B.JMP SHORT DONI  C.DEC [BX]  D.MUL CL

10、在进行二重循环程序设计时,下列描述正确的是(A)。     DX

  A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内

  B.外循环初值应置外循环之内;内循环初值应置内循环之内

  C.内、外循环初值都应置外循环之外

  D.内、外循环初值都应置内循环之外,外循环之内

11、条件转移指令JNE的测试条件为(ZF=0)。     DX

12、执行如下程序:

    MOV AX,0

    MOV BX,1

    MOV CX,100

    A:ADD AX,BX

    INC BX

    LOOP A

    HLT

    执行后(BX)= (101)。     DX  

13、上题的程序执行后(AX)= (5050)。     DX

14、对于下列程序段:

    AGAIN:MOV AL,[SI]

    MOV ES:[DI],AL

    INC SI

    INC DI

    LOOP AGAIN

    也可用__ REP MOVSB __指令完成同样的功能。     DX

15、

DA1  DB‘ABCDEFGHI’

  DA2  DB  9 DUP(0)

    ┇

    LEA SI,DA1

    LEA DI,DA2

    MOV CX,9

    CLD

  LOP: LODSB

    SUB AL,10H

    STOSB

    LOOP LOP

    . . .

 试问:①写出程序执行后DA2各字节中的数据。        CXFX

   ②保持程序功能情况下,程序中 可否改写为

123456789;不能更改

16、程序段如下:    CXFX

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

   :

   MOV CX,7

   LEA S1,BLK1

   NEXT: MOV AL,[SI]

   INC SI

   TEST AL,81H

   LOOPZ NEXT

   MOV BL,[SI]

   :

   请回答程序段运行后:(AL)=___5或0FBH__

   (BL)=___14H或20______

17、下面程序的功能是什么?    CXFX

STRING DB 100 DUP(?)

         MOV AX,SEG STRING

         MOV DS,AX

         LEA SI,STRING

         MOV CX,100

LAB: MOV AL,[SI]

          CMP AL,’a’

          JB  LAB1

          CMP AL,’z’

          JA  LAB1

          SUB AL,32

          MOV [SI],A

LAB1: INC SI

          LOOP LAB

将STRING里的小写字母’a’-‘z’转成相应的大写字母’A’-‘Z’

18、现有下列数据段:    CXTK

   DATA SEGMENT

   STR1 DB‘ABCDEFGHIJKL'

   COUNT EQU -STR1

   BUF DB COUNT DUP(0)

   DATA ENDS

   下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。

   MOV SI,OFFSET BUF-1

   MOV DI,OFFSET BUF

   MOV CX,COUNT

   ___CLD_或  STD_____

   LOOP:MOVSB

   ______ SUB SI,2______ ADD DI,2__

   LOOP LOP

19、下述程序段完成计算2~20之间的偶数的和,并存于AX中。试把空白处填上适当的指令。     CXTK

            XOR  AX,AX

            MOV  BX,0

                 MOV  CX,10或MOV  CX,0AH       

    CONT: ADD  AX,BX

                 ADD  BX,2             

            LOOP  CONT

20、BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。    CXTK

    MOV CX,32H

    LEA SI,BEG

    MOV DI,SI

         (1)   

    DON:MOV AL,[SI]

         (2)   

    MOV [SI],AL

         (3)   

    DEC DI

    LOOP DON

    HLT

答:  (1) ADD DI, 99

    (2) XCHG AL, [DI]

    (3) INC SI

21、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。      BC

    DATA  SEGMENT

    DA1  DW  XXXX

    DATA ENDS

 答:

CODE SEGMENT

          ASSUME CS:CODE,DS:DATA

       START: MOV  AX,DATA

              MOV  DS,AX

              LEA  SI,DA1

              MOV  CX,16

              XOR BL,BL

       AGAIN: MOV  AL,[SI]

              HL AL,1

              JC NEXT

              INC BL

        NEXT:INC SI

              LOOP AGAIN

              TEST BL,01H

              JNE  L1

              CLC

              JMP DONE

           L1: STC

         DONE: MOV AH,4CH

               INT 21H

         CODE ENDS

              END START

22、下述程序段完成计算2~20之间的偶数的和,并存于AX中。试把空白处填上适当的指令。     CXTK

            XOR  AX,AX

            MOV  BX,0

               MOV  CX,10或MOV  CX,0AH     

    CONT: ADD  AX,BX

               ADD  BX,2                 

            LOOP  CONT

23、如下程序应用冒泡法对一个无符号数组排序(由小到大排序),请完成该程序。

(注:为该程序分配100字的堆栈存储空间。)     CXTK

    SSEG   SEGMENT  STACK

            DW  100  DUP  (?)            

    SSEG   ENDS

    DSEG   SEGMENT

            SWAP  DB  ?                

    ARRAY  DW  32760, 127, 0, 65000, 230, 100

    DSEG   ENDS

    CSEG   SEGMENT

            ASSUME  CS∶CSEG,DS∶DSEG,SS∶SSEG

    START: MOV  AX,DSEG

             MOV  DS,AX

    SORT:  MOV  CX,5

               MOV  SI,0              

             MOV  SWAP,0

    INNER: MOV  AX,ARRAY[SI]

             CMP  AX,ARRAY[SI+2]

             JBE   NOSWAP

             XCHG  AX,ARRAY[SI+2]

                 MOV  ARRAY[SI],AX          

             MOV  SWAP,1

    NOSWAP:   ADD   SI,2             

             LOOP  INNER

                  CMP  SWAP,1             

             JNZ  SORT

             MOV  AH,4CH

             INT   21H

    CSEG  ENDS

           END   START

7子程序设计
1、主程序和所调用的子程序在同一代码段中,子程序的属性应定义为( C )。 DX

   A.TYPE       B.WORD         C.NEAR         D.FAR

2、 MOV AL,38H

MOV BL,49H

CALL SUBO

INC AL

DEC CL

SUBO PROC

ADD AL,BL

MOV CL,AL

DAA

RET

SUBO ENDP

上述程序段运行后,AL=________88H _____________,CL=________80H __________。     CXFX

3、FACT  PROC

         PUSH  DX

         MOV   DX,AX

         CMP   AX,0

         JZ     DONE

         DEC   AX

         CALL  FACT

         MUL  DX

         POP   DX

         RET

DONE:MOV  AX,1

         POP   DX

         RET

FACT   ENDP

若执行以上子程序前,(AX)=5,则子程序完成的功能是:    5!(或求5的阶乘)       ,执行该子程序后(AX)=    120     。     CXFX

4、在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来。(占内存空间大,但速度快)。     DX

5、设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。   CX

   数据段如下:

   DATA SEGMENT

   DAT DB XXH

   SQRTAB DB 0,1,4,9,...81

   SQR DB?

   DATA ENDS

    答:

   DATA SEGMENT

   DAT DB XXH

   SQRTAB DB 0,1,4,9,…,81

   SQR DB?

   DATA EMDS

   STACL1 SEGMENT PARA STACK

   DW 20H DUP(?)

   STACK1 ENDS

   CODE SEGMENT

   ASSUME CS:CODE,DS:DATA,SS:STACK1

   START: MOV AX,DATA

   MOV DS,AX

   ┇

   CALL SUBROT

   ┇

   MOV AH,4CH

   INT 21H

   SUBROT PROC

   PUSH AX

   PUSH BX

   LEA BX,SQRTAB

   MOV AL,DAT

   TEST AL,80H

   JNS NEXT

   NEG AL

   NEXT: XLAT SQRTAB

   MOV SQR,AL

   POP BX

   POP AX

   RET

   SUBROT ENDP

   CODE ENDS

   END SRART

6、设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编一程序,求出A单元中给定数(<=15=的平方值送B单元保存。    BC

答: DATA SEGMENT

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

    DB 100,121,144,169,196,225

    A DB 12

    B DB?

    DATA ENDS

    CODE SEGMENT

    ASSUME CS:CODE,DS:DATA

    START PROC FAR

    PUSH DX

    XOR AX,AX

    PUSH AX

    MOV AX,DATA

    MOV DS,AX

    MOV BX,OFFSET SQTAB

    MOV AL,A

    XLAT

    MOV B,AL

    RET

    START ENDP

    CODE ENDS

    END START

7、FUNCTION  MACRO  P1,P2,P3

               MOV     AX,P1

               P2        P3

               ENDM

  请回答下列问题:

⑴上面程序段中,MACRO和ENDM是一对伪指令,在  宏      定义中,它们成对出现。

   ⑵通过调用语句FUNCTION  100,SUB,AX调用之后,AX寄存器中的内容为     99。     CXFX

                                          

2009~20##学年第一学期期末考试《汇编语言》试卷(B)

一、   填空题(1x27=27分)

1、微型计算机系统包括         和        两部分。系统总线包括:          、         、         。

2、请将左边的项与右边的解释联系起来(把所选字母放在括号中)。

(A)存储器    (  )保存当前栈顶地址的寄存器

(B)SP    (  )表示计算机执行什么操作的符号

(C)控制标志  (  )控制操作的标志,如DF、TF等。

(D)段地址    (  )存放指令机器码的存储器段区

(E)代码段    (  )存储程序、数据等信息的记忆装置

(F)标号  (  )将汇编语言程序翻译成机器码程序的实用程序

(G)汇编程序  (  )是逻辑段的起始地址

(H)助记符    (  )指出指令在程序中位置的符号地址

3、汇编语言源程序的上机调试过程包括         、         、       、            。

4、8086CPU把1MB存储器分成若干逻辑段,段不能起始于任意地址,必须位于    个字节的边界上。每个段最大为     字节,8086cpu中设置了4个寄存器用来存放逻辑段的段地址,它们是:      、       、       、        。

5、已知逻辑地址得到物理地址的计算方法为                  。

6、在debug中显示寄存器内容的命令为       ,修改内存单元数据的命令为        ,单步执行的命令为        。

二、   单选题(2×9=18分)

1、下列哪个是汇编语言的特点:(    )

A、面向问题               B、可以直接控制硬件     

C、可以方便地移植      D、便于实现复杂算法

2、将字变量BUF的内容送入SI的正确指令是(  )

A、mov [si],buf                B、mov si,[buf]

C、mov offset buf,si           D、mov si,offset buf

3、设(BL)=0aH,要使结果(BL)=05H,应执行指令是      。

A、AND BL,0FH          B、NOT BL           C、OR BL,0FH     D、XOR BL,0FH     

4.设SP初值为3050H,执行指令Pop BX后,SP的值是(   )

A.304FH   B.304EH

C.3052H   D.3051H

5.设AL=57H,BL=24H,执行指令ADD AL,BL后,寄存器内容为(   )

A.AL=7BH,BL=0    B.AL=57H,BL=24H

C.AL=24H,BL=7BH  D.AL=7BH,BL=24H

6、已知BX=028AH,SI=0294H,(DS:051EH)=32H,(DS:051FH)=54H。执行语句mov BX,[BX+SI]后,BX中的内容是(   )

A.051EH   B.5432H

C.1E05H   D.3254H

7、在一连续的存储单元中,依次存放数据42H,41H,44H,43H,46H,45H,可选用的数据定义语句是(   )

A.DW ‘BA’,‘DC’,‘FE’   B.DW 4142H,4344H,4546H

C.DW ‘AB’,‘CD’,‘EF’           D.DB 41,42,43,44,45,46

8、在IBM PC中,一个字为(      )位二进制数。

A、8位             B、16位            C、32位          D、64位

9、在IN AL,PORT指令中,PORT称为(       )。

A. 立即数           B. 有效地址      C.端口地址          D.寄存器名

三、简答题(共24分)

1、 写出下列竖式的计算结果和状态标志的值,并结合CF、OF解释运算结果。(5分)

           0 0 0 0   1 0 0 1

        +  0 1 1 1   1 1 0 0

        ----------------------------

2、设有宏定义如下:

      TRAN  MACRO  N2,N1

              MOV  AX,N1

              MOV  BX,N2

              MOV  N1,BX

              MOV  N2,AX

              ENDM

请将宏调用:TRAN  BUF1,BUF2进行宏展开(4分)。

3、在DEBUG程序中,一条指令语句表示为3000:0100  ADD  AX,7。请问:段地址、偏移地址和物理地址分别为多少?存放段地址和偏移地址的寄存器是哪两个?(4分)

4、指出下列指令源操作数的寻址方式:(8分)

    (1)、MOV     AX,[BX+DI]           ;            

    (2)、MOV     AX,2000H         ;            

    (3)、MOV  AX,ARRAY[BX][SI]    ;            

    (4)、MOV     AX,[DI+20H]          ;            

5、主程序和子程序之间的参数传递有几种实现方式?(3分)

四、程序分析题(共15分)

1、分析如下程序:(3分)

试回答:(1)程序执行后(A)=(                   ),(B)=(               )。

(2)设执行前SP=200H,则执行后SP=(             )。

data segment

    A dw 1234h

    B dw 2345h

data ends

code segment

    assume cs:code,ds:data

start:  mov ax,data

      mov ds,ax

      push  A

      push  B

      pop  B

      pop  A

      mov ah,4ch

      int 21h

code ends

     end start

2、假设ES段中有一个字符串’12FG3LM5C’,其名为ARRAY,下面的程序段执行后CX的值为(       )。(2分)

cld

lea di,es:array

mov al,'L'

mov cx,9

repne scasb

3、阅读下列程序段,程序执行到HLT时,(AX)=(       ),(BX)=(      )。(4分)

    xor ax,ax

    mov bx,1

    mov cx,6

lop:add ax,bx

    inc bx

    loop lop

    hlt

4、分析如下程序,试回答:(1)如果从键盘输入字符’4’,程序输出是什么?(2)此程序段的功能是什么?(6分)

data segment

STRING DB 'ABCDEFGHIJ'

data ends

code segment

    assume cs:code,ds:data

start:mov ax,data

      mov ds,ax

      MOV AH,01;从键盘输入字符1--9

      INT 21H

      AND AL,0FH

      DEC AL

      XOR AH,AH

MOV BX,OFFSET STRING

ADD BX,AX

      MOV DL,[BX]

      MOV AH,02H;显示输出

      INT 21H

      mov ah,4ch

      int 21h

code ends

     end start

五、编程题(共15分)

1、在以GRADE为首地址的数组中存放着某班某门课30个学生的成绩。试编写一完整汇编语言程序实现:统计小于60分,60~89分和大于等于90分的学生人数,统计结果分别存放在LOWNUM、MIDDLENUM和HIGHNUM单元中(10分)

2、按照流程图要求编写程序段(5分)

2009~20##学年第一学期期末考试《汇编语言》试卷(B)

标准答案和评分标准

﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉

一、填空题(1x27=27分)

1、硬件,软件 (此两空次序不论),地址总线或AB,数据总线或DB,控制总线或CB(此三空次序不论)

2、B,H,C,E,A,G,D,F

3、编辑源程序,汇编生成目标文件,连接生成可执行文件,运行或调试可执行文件 (简要回答:编辑,汇编,连接,运行或调试 也得分)

4、16,64K或65536或216,CS,DS,ES,SS(最后四空次序不论)

5、段地址X10H+偏移地址 或段地址 X 16+偏移地址 或 段地址左移四位+偏移地址

6、R,E,T

二、选择题(2x9=18分)

1~5 B B D C D

6~9 B C B C

三、简答题(共25分)

1、答:

  (1分)

状态标志:CF=0,PF=0,AF=1,ZF=0,SF=1,OF=1 (2分)

OF=1表明此运算在带符号数意义下发生溢出,结果不正确,即(+9)+(+124)=-133 (1分)

CF=0表明此运算在无符号数意义下没有发生溢出,结果正确,即9+124=133    (1分)

2、答:(每条指令1分)

   Mov ax,buf2

   Mov bx,buf1

   Mov buf2,bx

   Mov buf1,ax

3、答:

段地址:3000H;偏移地址:0100H。物理地址:30100H。(3分)

存放段地址的寄存器是CS。存放偏移地址的寄存器是IP。(2分)

4、答:(每小题2分,合计8分)

(1)、基址变址寻址;

(2)、立即数寻址;

(3)、相对基址变址寻址;

(4)、寄存器相对寻址。

5、(3分)

(1)、用寄存器传递参数。

(2)、用存储单元传递参数。

(3)、用堆栈传递参数。

四、程序分析题(15分)

1、1234H,2345H,200H(每空1分)

2、3(2分)

3、15H或21,07H(每空2分)

4、输出D(2分),程序的功能是将字符串string中指定序号(1基准)的字符输出。(4分)

五、编程题(共15分)

  1、参考答案:(共10分,程序结构正确可得4分,功能正确得6分)

data segment

    GRADE      DW 54h,68h,56h,59h,35h,48h,4dh, 44h,5ah,60h,...;学生成绩数组

    LOWNUM       DW ?    ;保存不及格人数

    MIDDLENUM  DW ?   ;保存60-89之间人数

    HIGHNUM      DW ?    ;保存90分以上人数

data ends

code segment

    ASSUME CS:code,DS:data

START:mov ax,data

    mov ds,ax

    lea di,GRADE

    mov cx,30 

loop1:

    mov ax,WORD PTR [di]

    cmp ax,60

    jae domiddle

    inc LOWNUM

    jmp continue

domiddle:

    cmp ax,90

    jae dohigh

    inc MIDDLENUM

    jmp continue

dohigh:

    inc HIGHNUM

continue:

    add di,2

loop loop1

    mov ah,4ch

    int 21h

code ends

end start

2、(正确使用条件转移指令3分,分支标号和各分支之间的隔离2分)

参考程序段:

        cmp bx,-2

        jle branch3

        cmp bx,2

        jl branch2

        mov ax,1

        jmp exit

branch2:mov ax,0

        jmp exit

branch3:mov ax,-1

   exit:...

更多相关推荐:
大学辅导员期末评语大全

你是个文静懂事的女孩踏实稳重有礼貌你的学习目的很明确态度也很认真希望你今后朝着精益求精扩大自己的知识面讲究更有效的学习方法方向努力争创更佳成绩你聪明伶俐思维敏捷反应动作都很快给我印象最深的是你的笑容和热情你的爱...

大学生期末学生评语

大学生期末学生评语1善良诚恳认真对于大学三年的时间有自己的计划和安排在学习中不断加深了对自己对本专业的了解从而有了自己努力的方向并能够积极主动的去争取2善良文静认真积极专注于专业学习这一年来专业素养提高很快能为...

大学生期末学生评语

大学生期末评语整理粉色衬衣资料来源于互联网1你是一位可爱的小男孩老师喜欢你的礼貌待人喜欢看你认真做作业的的样子更喜欢你获得成功时兴奋的笑脸你知道吗每时每刻老师都在注视着你为你的进步而高兴为你的退步而焦心你如果能...

大学期末老师评语大全

大学期末老师评语大全关于大学期末老师评语大全遵守学校各种规章制度学习认真做事踏实对于老师指出的学习方向你总是认真努力去做每一份作业都能尽力收集资料经过自己的思考努力做好安静认真踏实努力与人为善是你的特点在宿舍在...

大学辅导员期末对学生评语

大学生期末评语廖雷同学勤奋好学热爱生活一直坚持遵守学校的各项规章制度具有良好的思想道德素质和思想文化素质各个方面表现较优秀有强烈的集体荣誉感和工作责任心坚持实事求事的原则尊重师长友爱同学严谨务实积极参加班级活动...

大学生评语大全

大学生评语大全一在校期间该同学在工作学习和思想等多方面获得成功在工作中他踏实肯干先后获得院优秀学生干部非典防治优秀标兵和江苏省优秀社团干部等多项称号学习中他求实创新不仅成绩突出多次获校内奖学金更在国内外大型竞赛...

大学生期末自我鉴定评语

免费分享创新大学生期末自我鉴定评语通过四年的大学生活我成长了很多在即将毕业之时我对自己这四年来的收获和感受作一个小结并以此为我今后行动的指南在学习上我刻苦努力孜孜不倦争取着大学那美好的时光去学习大学四年不光使我...

大学辅导员学生评语汇总大全

模板一有特长的学生该生自入校以来能积极参加政治学习和政治活动思想和行动上能与党中央保持一致学习刻苦认真专业成绩优秀尤其在方面有特长曾获奖励为人诚实守信有很强的责任心有团队意识和合作精神能尊师敬长团结同学总之该生...

大学生操行评语大全

大学生操行评语大全1该生思想上积极要求上进学习刻苦认真善于思考生活中能应严格要求自己为人诚恳待人热情工作踏实负责能出色的完成交给的各项任务具一定的团队协作精神及创新能力是一名品学兼优的合格大学生2该生思想上积极...

在校大学生期末操行评语

在校大学生期末操行评语1该生在校期间学习态度端正成绩优良善于创新严于律己宽于待人做事认真谨慎能吃苦耐劳团队意识及协作精神较强是一名综合素质强的合格大学生2该生诚实守信为人正直作风踏实做事具有很好的计划性认真负责...

大学辅导员期末对学生评语

该同学勤奋好学热爱生活一直坚持遵守学校的各项规章制度具有良好的思想道德素质和思想文化素质各个方面表现较优秀有强烈的集体荣誉感和工作责任心坚持实事求事的原则尊重师长友爱同学严谨务实积极参加班级活动是一个乐观向上的...

大学生毕业评语大全

大学生毕业评语大全该生积极向上的生活态度和广泛的兴趣爱好对工作责任心强勤恳踏实有较强的组织宣传能力有一定的艺术细胞和创意注重团队合作精神和集体观念该同学为人诚恳乐于助人平时积极参加校内外的各项活动和暑期社会实践...

大学期末评语大全(30篇)