汇编语言复习资料

汇编语言程序设计

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

vJD:简答题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寄存器后执行INT21H。 TK

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

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

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

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

12、键盘I/O、显示I/O和打印I/O分别对应16H10H17H号中断。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.1B.2C.3D.由指令长度决定的

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

A.MOVDS,ESB.MOV[SI],[DI]C.MOVAX,BLD.MOV[DI],BL

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

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

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

A、AX,BX,CX,DXB、BX,BP,SI,DIC、SP,IP,BP,DXD、CS,DS,ES,SS

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

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

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

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

A、MOVCS,AX B、MOVDS,AX C、MOVSS,AX D、MOV ES,AX

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

A、TESTAL,02H B、ORAL,ALC、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,OFFSETVAR指令完全等效的指令是(D)。DX

A、MOV BX,VARB、LDSBX,VARC、LESBX,VARD、LEA BX,VAR

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

16、MOV SP,3210H

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

17、BUF DW 10HDUP(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,则指令MOVAX,[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

ORG40H

DA1DW 0AB12H,8574H

……

MOVAX,DA1

MOVBX,OFFSET DA1

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

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

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

C.MOVCX,NUM2-NUM1D.MOV CX,NUM2+NUM1

27、数据段定义如下:DX

X1 DB10H,50,1

X2 DW10H,20,3

X3 DD ?

COUNT EQUX3-X1

变量COUNT的值是(9 )。

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

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

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

29、AL和VAR字节单元中分别存放一个带符号数,执行CMPAL,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

DR2DW 10HDUP(0,2 DUP(2))

……

MOVBL,LENGTH DR1

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

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

STC

PUSH AX

ADC AX,0

PUSH AX

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

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

DA1 DW ’C’,’D’

DA2 DB 18DUP(?)

DA3DW $-DA2

……

MOV BX,DA3

MOV AX,DA1

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

37、现有如下数据段

DATASEGMENT

ARRAY1 DB 1,26,‘3456’

ARRAY2 DW 7,89H,10

VALEQU ARRAY2-ARRAY1

DATAENDS

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

38、当执行指令ADDAX,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

   SHLCL,1      SHL CL,CL

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

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

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

43、REPZCMPSW指令,重复执行的终止条件是( 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,BLAAA

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

49、设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMULBL”分别执行后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’

MOVAX,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 ④ MOVDS,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 WORDPTR 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,指令MOVAX,(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 AXWORDPTROP1+1

MOVBLBYTE PTROP2+1

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

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

(2)AD3 DD 100 DUP(?) 400

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

MOV [BX],[SI]

MOV AX,DL

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

操作数类型不匹配。

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

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

(2)执行段间返回RET指令时,执行的操作是:栈顶内容→IPSP+2→SP栈顶内容→CSSP+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)RCLDX,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;

答:(1SBBAX0520H2分)2MOV AXSEGTABL2分)

79、D1 DB 20H DUP(?)

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

  答: LEA SID1 MOV SIOFFSET D1 MOV SID2

80、A DW 1234H

   B DW 5678H

   :

   PUSH A

   PUSH B

   POP A

   POP B

  试回答: CXFX

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

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

答:

A=5678H2分)(B=1234H2分)

  SP=2000H2分)

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

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

87、已知数据段中定义

DAT1 DB12H,34H,56H,78H

MOVCX,0

MOVAX,WORD PTR DAT1

MOVCL,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

SHLAL,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,OFFSETNUM

    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 DIDA_BY

MOV CX32

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

____ MOVBX500_________

XOR DX,DX

DIV BX

MOV QUI,AX

____ MOV REMDX_________

96、已知数据段中定义

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

MOVCX,0

MOVAX,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 PTRDONE属于(段间转移直接寻址)。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的指令是( XORBX,BX  )DX

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

  A.STOSW        B.ADD AL,CL

  C.NEG BX       D.INC DA[BX]

8、无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是( ORBH,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、CMPB、SUBC、ANDD、MOV

第5章:分支程序设计

汇编语言复习资料

1、检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( JCLOP1  )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

ADCAH,0

DECCL

JNZAGAIN

问:(1)该程序段完成的功能是:AX内容乘3BXCXFX

  (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 K1JZK1_________

   MOV PLW,BX

   JMP DONE

   K1:__MOVPLWA___________

   DONE:

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

___ XORAHAL____

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

____ CMPAL[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:CMPAL,[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]

MOVAH,02H

INT21H

_____INC BX_______________

_____CMP[BX]24H________

JNE LOP

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

____ XORAHAL_______________

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

DATAENDS

答:

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

DATASEGMENT

ARRAY DW23ABH,1570H,567,1765H,46,5210H

COUNT EQU ($-ARRAY)/2

DA1DB ?

DA2DB ?

DATA ENDS

……

LEA SI,ARRAY

MOV CX,COUNT

LOP1:MOV AX,[SI]

TESTAX0001H

JZ LOP2

INCBL

JMP LOP3

LOP2:INC BH

LOP3:ADDSI2

DEC CX

JNZ LOP1

MOV DA1,BL

MOV DA2,BH

-1 x<0

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

1x>0

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

DATA SEGMENT

XDB45H

YDB?

DATAENDS

;

CODE SEGMENT

ASSUMECS:CODE,DS:DATA

START:MOV AX,DATA

MOVDS,AX

MOV AL,XXX

MOV AH,0

CMP AL,0

JGENEXT1

MOV BL,-1

JMPOVER

NEXT1:CMP AL,0

JENEXT2

MOV BL,1

JMPOVER

NEXT2:MOV BL,0

OVER: MOV ZZZ,BL

MOVAH,4CH

INT 21H

CODE ENDS

ENDSTART

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

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

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

STRLWRPROC

PUSH AX

PUSHSI

MOVSI,BX

AGAIN:MOVAL,[SI]

OR AL,AL

JZOK

CMP AL,’A’

JB NEXT

CMP AL,’Z’

JANEXT

ORAL,20H(或者ADDAL,30H)

MOV[SI],AL

NEXT: INCSI

JMPAGAIN

OK: POP SI

POPAX

RET

STRLWRENDP

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

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

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


AMOV AL,BUF

JS K1

SHR AL,1

JNC K1

MOV AL,0

K1:……

BMOV AL,BUF

AND AL,11

JNZ K2

MOV AL,0

K2:……



DMOV AL,BUF

JNP K4

TEST AL,80H

JNZ K4

MOV AL,0

K4:……

CMOV AL,BUF

TEST AL,81H

JNZ K3

MOV AL,0

K3:……

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

A.MOVCX,0B.MOV CX,1

LOP:LOOPLOPLOP:LOOP LOP

C.MOVCX,0FFFFHD.MOVCX,256

LOP:LOOPLOPLOP: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 DB1032547698

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 PTRDAT [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 9DUP(0)

LEASI,DA1

LEADI,DA2

MOVCX,9

CLD

LOP: LODSB

SUBAL,10H

STOSB

LOOPLOP

. . .

试问:①写出程序执行后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)=___50FBH__

   (BL)=___14H20______

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

STRING DB 100 DUP(?)

MOVAX,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

   ______ SUBSI2______ADD DI2__

   LOOP LOP

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

XORAX,AX

MOVBX,0

MOVCX10MOVCX0AH

CONT: ADDAX,BX

ADDBX2

LOOPCONT

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

DATAENDS

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

XORAX,AX

MOVBX,0

MOVCX10MOVCX0AH

CONT: ADDAX,BX

ADDBX2

LOOPCONT

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

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

SSEG SEGMENTSTACK

DW100 DUP()

SSEG ENDS

DSEG SEGMENT

SWAPDB

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

MOVSI0

MOV SWAP,0

INNER:MOV AX,ARRAY[SI]

CMPAX,ARRAY[SI+2]

JBE NOSWAP

XCHG AX,ARRAY[SI+2]

MOVARRAY[SI]AX

MOV SWAP,1

NOSWAP:ADDSI2

LOOP INNER

CMPSWAP1

JNZ SORT

MOV AH,4CH

INT 21H

CSEG ENDS

END START

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

A.TYPEB.WORDC.NEARD.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

JZDONE

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 MACROP1,P2,P3

MOVAX,P1

P2P3

ENDM

请回答下列问题:

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

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

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/201521.html

更多阅读

怎样有效的选择考研英语复习资料书

怎样有效的选择考研英语复习资料书——简介如今考研成了很多大学毕业生的选择,然而对于刚刚接触考研的同学来说选择什么样的复习资料确实件头痛的事,本文基于此现状,为广大考研的学子们提供些许经验,希望能为提供帮助。考研英语主要体型

初级急救证理论考试复习资料

初级急救证理论考试复习资料一、选择题示例及知识点引导1.心肺复苏指南中单或双人复苏时胸外按压与通气的比率为A.30:2B.15:2C.30:1D.15:12.心肺复苏指南中胸外按压的部位为A.双乳头之间胸骨正中部B.心尖部C.胸骨中段D.胸骨左

苏教版小学五年级数学下册复习资料

文章来源莲 山课件 w ww.5 YK J.cOm五年级数学(下册)期末复习资料姓名________第一单元 方程知识点:等式:表示相等关系的式子叫做等式。练习:1、下面的式子中,是等式的在后面( )里画“√”。X+18=36 ( ) x+2﹥10 ( ) 72-x ( ) x=3 ( )知识点:方程:含有未

摘录:科教版小学科学五年级下册复习资料

科学五年级下册第一单元《沉和浮》复习资料1、同一种材料构成的物体,在水中的沉浮与它们的(轻重)、(体积大小)没有关系。如:一块完整的橡皮放在水中是沉的,切四分之一放入水中还是沉的。2、大小相同的物体,越(重)越容易(沉),越(轻)越容易(浮);轻重相同

《口技》复习资料

《口技》复习资料《口技》选自《虞初新志·秋声诗自序》,作者林嗣环,清代顺治年间进士。原文译文对照京中有善口技者。京城里有一个善于表演口技的人。会宾客大宴,于厅事之东北角,施八尺屏障,一天,正赶上一家大宴宾客,在客厅东北角设置

声明:《汇编语言复习资料》为网友爱比烈酒醇分享!如侵犯到您的合法权益请联系我们删除