当前位置:文档之家› 汇编语言综合复习

汇编语言综合复习

汇编语言综合复习
汇编语言综合复习

汇编语言综合复习文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

《汇编语言》综合复习资料

一、单项选择题

在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题后的括号内:

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

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

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

2.指令指针寄存器是()。

(A) IP (B) SP (C) BP (D) BX

3.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( )

(A) 1400H (B) 77F8H (C) 0000H (D) 0FFFFH

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

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

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

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

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

6.在下列语句中,BUFFER称为( )

BUFFER DB 01H,0AH

(A) 符号 (B) 变量(C) 助记符(D) 标号

7.DATA SEGMENT

TA1 DW 0102H,0304H,0506H

TA2 DB 02H,03H,04H

MOV BX,DS:[0006H]

AND BX,0FFH

OR BH,[BX]

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

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

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

(A) JLE (B) JNL (C) JNLE (D) JL

9.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为

()

TEST BH,01H

_____K1

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

10.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是

()。

(A) TEST BL,4FH

JZ NEXT

(B) XOR BL,4FH

JZ NEXT

(C) AND BL,4FH

JZ NEXT

(D) OR BL,4FH

JZ NEXT

11.在汇编语言程序中,对END语句的叙述正确的是()。

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

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

12.下面的数据传送指令中,错误的操作是()。

(A) MOV SS:[BX+DI],1000H (B) MOV DX,1000H

(C) MOV WORD PTR[BX],1000H (D) MOV DS,2000H

13.下面指令执行后,变量DAB中的内容是()。

DAW DW 2A05H

DAB DB 0FAH

MOV AL,BYTE PRT DAW

SUB DAB,AL

(A) 0DAH (B) 0FAH (C) 0F5H (D) 0D0H

14.串操作指令中,目标串操作数的段地址一定在( )寄存器中。

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

15.设数据段中已有: DA1 DB 12H,34H

DA2 DW 56H,78H

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

(A) ADR1 DW DA1 (B) MOV DA1+1,AX

(C) MOV BYTE PTR DA2+1,AL (D) MOV WORD PTR DA1+1,AX

16.DEC BYTE PTR[BX]指令中的操作数的数据类型是( )

(A) 字(B) 双字(C) 字节(D)四字把若干个模

块连接起来成为可执行文件的系统程序称为( )。

(A) 连接程序 (B) 汇编程序 (C) 编译程序 (D) 目标程序

18.操作数直接存放在指令中,则它的寻址方式是( )。

(A) 直接寻址 (B) 寄存器寻址 (C) 寄存器间接寻址 (D) 立即寻址

19.在程序状态字寄存器中,当方向标志DF位为0时,每次操作后使变址寄存器SI和

DI( )。

(A) 减量 (B) 增量 (C) 保持不变 (D) 地址减1

20.八位二进制补码整数的最小值是( )。

(A) -126D(B) -127D (C) -128D (D) -129D

21.在微机系统中分析并控制指令执行的部件是()

A. 寄存器

B. 数据寄存器

C. CPU

D. EU

22.能被计算机直接识别的语言是()

A.C语言B.汇编语言C.机器语言D.面向对象语言

23.MOV AX,ES:COUNT[DI] 源操作数的寻址方式是( )

A. 基址寻址

B. 立即寻址

C. 变址寻址

D. 基址变址寻址

24.指令MOV BX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为( )

A. 17500H

B. 16500H

C. 14500H

D. 13500H

25.在标志寄存器中表示溢出的标志( )

A. AF

C. OF

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

的是()。

(A) 表示结果中含1的个数为偶数(B) 表示结果中含1的个数为奇数

(C) 表示该数为偶数(D) 表示结果中低八位含1的个数为偶数

27.汇编语言指令中唯一不可缺少的域是( )

A. 标号名字域

B. 助记符域

C. 操作数域

D. 注释域

28.已知(DS)=3000H,(SS)=2500H,(BX)=0100H,(BP)=0040H,

指令MOV AX,DS:[BP] 源操作数的物理地址是()。

A.25040H B. 30040H D. 55040H

29.下列传送指令中,有语法错误的指令是()。

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

30.指令ADD ES:[DI],AX 和存放在()。

A.寄存器 B. 附加段 C. 堆栈段 D. 代码段

二、简答题

1.在某子程序的开始处要保护AX,BX,CX三个寄存器信息,在子程序结束时要恢复这三个寄存器信息。假设恢复现场的指令序列如下,试写出保护现场的指令序列。

POP AX

POP BX

POP CX

2.下面的程序段有错吗若有,请指出错误。

CRAY PROC

PUSH AX

ADD AX,BX

RET

ENDP CRAY

3.试根据以下要求,分别写出相应的汇编语言指令。

(1)把AX寄存器和BX寄存器的内容相加,结果存入AX中。

(2)用BX和SI的基址变址寻址方式,把存储器中的一个字节与DL的内

容相加,并把结果送回DL中。

(3)把数5EH与AH内容相加,结果送回AH中。

4.对于下面的数据定义,三条MOV指令分别汇编成什么

TAB1 DW 10 DUP()

TAB2 DB 10 DUP()

TAB3 DB ‘1234’

MOV AX,LENGTH TAB1

MOV BL,LENGTH TAB2

MOV CL,LENGTH TAB3

5.完成下列操作,分别选用什么指令:

(1)将AX的内容,减去0520H,和上次运算的借位;

(2)将变量名TABL的段地址送AX;

(3)将变量名TABL的偏移地址送AX。

6.假设有如下伪指令:

D1 DB 20H DUP()

D2 DW D1

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

7.已知数据段定义如下:

DATA SEGMENT

VA DB 10H

VB DW 3*20

MSG DB ‘HELLO!’

COUNT EQU 15

BUF DW COUNT DUP(5,3 DUP(1,2),0)

DATA ENDS

问题:

(1)执行 MOV BX , 0FFSET VA后, (BX)=

(2)执行 MOV CX , TYPE BUF后, (CX)=

(3)经汇编后, BUF占有的存储空间是字节8.在指令系统中,段内. 段间返回均为RET指令。试回答:(1)执行段内返回RET指令时,执行的操作是:(2)执行段间返回RET指令时,执行的操作是:9.下面的程序段有错吗若有,请指出错误。(5分)

CRAY PROC

PUSH AX

ADD AX,BX

RET

ENDP CRAY

三、程序分析(读程序)题

1. A DW 6666H

B DW 8888H

………

PUSH B

PUSH A

POP B

POP A

试回答:

(1) 上述程序段执行后,以十六进制表示,

(A)=_____H,(B)=_____H

(2) 设执行前SP=100H,执行后,以十六进制表示,

SP=_____H

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)=_____H

(BL)=_____H

(DX)=_____H

3.分析下面程序段:

MOV AX,3456

XCHG AX,BX

MOV AX,3456

SUB AX,BX

JE DONE

KK:A DD AX,BX

DONE:

请问该程序段执行完JE DONE语句后,以十六进制表示,(AX)=_____H,(ZF)=_____H

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)=______H,(BL)=______H 5.分析下面程序段:

MOV AL,200

SAR AL,1

MOV BL,AL

MOV CL,2

SAR AL,CL

ADD AL,BL

试问程序段执行后,以十六进制表示,

(BL)=_____H,(AL)=_____H

6.有下列程序段:

ADD AL,BL

JE L1

RCL AL,1

JE L2

RCR AL,1

INC AL

JE L3

上述程序运行后,试回答(以十进制表示):

(1)当(AL)=__________时,程序转向L1(2)当(AL)=__________时,程序转向L2(3)当(AL)=__________时,程序转向L3 7.有下列程序段

MOV BX,00FFH

AND BX,0FFFH

OR BX,0F0FH

XOR BX,00FFH

试问上述程序段运行后,以十六进制表示,

(AL)=____________ H

8. 执行下列指令后,AX寄存器中的内容是什么

START DW 10H,20H,30H,40H,50H

EE1 DW 3

MOV BX,OFFSET START

ADD BX,EE1

MOV AX,[BX]

执行后,以十六进制表示,

(AX)=____________ H

9.有下列程序段:

MOV SI,10H

MOV AX,1234H

MOV [SI+12H],AX

LEA BX,[SI]

MOV [SI+14H],BX

LES BX,DWORD PTR [SI+12H]

MOV AX,ES

DEC AX

执行上述程序段后,AX和BX寄存器的内容, 以十六进制表示,(AX)= ____________ H

(BX)= ____________ H

10.有下列程序段

MOV CX,1AH

MOV DL,'z'

LAB1: PUSH DX

MOV AH,02H

INT 21H

POP DX

DEC DX

LOOP LAB1

执行后,屏幕输出结果为:____________________

11. 设 ( SP )=80H , ( BX ) = 0FFH ; ( AX )=1

PUSH BX

ADD BX , AX

XOR BX , AX

PUSH BX

POP CX

上述程序段运行后,(SP )= ______H ( CX )=_______H 12. 有如下程序段

MOV AX , 0

MOV BX , 1

MOV CX , 5

LOP:ADD AX,BX

ADD BX , 2

LOOP LOP

问题:

(1) 程序的功能是什么(可用算式表示)

(2) 运行后, (AX)=__________

13. 已知(DS)=5000H,(BX)=0100H,(DI)=0002H,(50100H)=45H,(50101H)=68H,(50102H)=0A1H,(50103H)=14H

先执行MOV AX,[100H],(AX)= ;

再执行ADD AX,[BX+DI],(AX)= ,CF= ,

OF= 。

14. 已知 (AX)=3200H, (DX)=0A000H,执行下列程序段:

NOT AX

NOT DX

ADD AX , 1

ADC DX , 0

问题:

(1) 程序执行后,(AX)= (DX)=

(2) 程序功能是什么

15. 有下列程序段

MOV AX,10

ADD AX,AX

MOV BX,AX

MOV CL,2

SHL AX,CL

ADD AX,BX

上述程序段执行后(AX)= ,(BX)=

16. 有下列程序段

MOV AX,9B47H

MOV BX,0B568H

ADD AX,BX

JNO L1

JNC L2

SUB AX,BX

JNC L3

JNO L4

JMP SHORT L5

问:

(1) 程序执行后,(AX)= _______________H

(2) 程序转向哪个标号

17. 行下列程序:

MOV AX,0C100H

MOV BX,8FC0H

SUB AX,BX

JNC L1

JNO L2

JMP SHORT L3

程序执行后,(AX)= ,程序转向

18. 有下列程序段

MOV AL,0FH

MOV BL,10H

CALL SUB1

INC AL

DEC BL

SUB1 PROC

ADD AL,BL

XCHG AL,BL

RET

SUB1 ENDP

上述程序段运行后,(AL)=__________H,(BL)=____________H

19.A DW 1234H

B DW 5678H

………

PUSH A

PUSH B

POP A

POP B

试回答:

(1) 上述程序段执行后,以十六进制表示,

(A)=_____H

(B)=_____H

(2) 设执行前SP=200H,执行后,以十六进制表示,

(SP)=_____H

四、程序填空题

下列各小题中,一个空只能填一条指令。

1. 下面程序段用来判断寄存器AH和AL中第3位是否相同,如果相同,AH置0,否则AH置全1。

试把空白处填上适当指令。

_____________________

AND AH,08H

_____________________

MOV AH,OFFH

JMP NEXT

ZERO:MOV AH,0

NEXT:……

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

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

COUNT EQU $-BUF

MAX DB

MOV BX,OFFSETBUF

MOV CX,COUNT-1

MOV AL,[BX]

INC BX

LOP1:_____________________

JAE NEXT

MOV AL,[BX]

NEXT:IN C BX

_____________________

MOV MAX,AL

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

TEST AX,8000H

(1) ___________

MOV PLW,BX

JMP DONE

K1: (2) ________

DONE:

4.在下面程序段的每一空框中填入一个语句(不得修改其它语句),以实现下述功能:求:z=|x-y|,设x,y,z分别为字数据的无符号变量名称。

MOV AX,X

CMP AX,Y

JB NEXT

SUB AX,Y

(1) ______________________

NEXT: MOV AX,Y

SUB AX,X

DONE: (2) ______________________

5.下列程序段将AX中值乘以9,请将程序填写完整

⑴__________

MOV CL,3

⑵____________

POP BX

ADD AX,BX

答:

(1) PUSH AX (2) SHL AX,CL

6.下列程序段求数组ARRAY的累加和。请将程序填写完整。

ARY DW 45H,68H,………….,0ABC1H,9600H;共10项

COUNT DW 10

⑴__________

MOV CX,COUNT

XOR AX,AX

AGAIN:ADD AX,[SI]

ADD SI,2

⑵____________

五、编制程序(段)题

1.编程序段 (10分)

编制将ES段中名为DATA的字存储区清零的程序段。假定DATA存储区定义为:DATA DW 20 DUP()

要求用循环指令编写,循环控制采用计数寄存器自动控制。(此题勿需书写完整的源程序格式,只需把试题要求的有关指令序列书写出来。)

2.编程序段 (10分)

设X,Y,Z,W存放16位带符号数,编程计算X*Y-Z的值并送到W

(此题勿需书写完整的源程序格式,只需把试题要求的有关指令序列书写出来。)

3.编程序段 (10分)

测试AL寄存器的D5和D0位,若同时为0,程序转向ZERO,执行AX 减去 BX;否则将AL清0,同时清 CF和OF标志。写出程序段。

(此题勿需书写完整的源程序格式,只需把试题要求的有关指令序列书写出来。)

4.编写完整程序:(13分)

设在DAT单元存放一个-9~+9的字节数据,在SQRTAB 数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。要求子程序开始时必须利用堆栈保护用到的各寄存器,并在返回前恢复;主程序结构要书写完整(包括子程序的调用方式)(结果不必输出)。其中数据段如下:

DATA SEGMENT

DAT DB -6

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

SQR DB

DATA ENDS

5.编写完整程序:(13分)

将一正数N插入一个已排好序的数组的正确位置。该数组的首地址和末地址分别为AHEAD与AEND,其中所有数均为正数,而且按递增顺序排序(结果不必输出) 。

数据段如下:

DATA SEGMENT

X DW

AHEAD DW 2,5,7,89,100,200

AEND DW 288

N DW 35

DATA ENDS

6.编写完整程序:(13分)

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

DATA SEGMENT

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

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

SUM DW 10 DUP(0)

DATA ENDS

7.编写完整程序:(13分)

在给定个数的数中寻找最大值,放至指定的存储单元。假设数据段如下:DATA SEGMENT

BUFFER DB 2,4,3,6,1,5

COUNT DW 6

MAX DB

DATA ENDS

部分参考答案及评分标准一、单选题(每小题2分,共60分)

1.D 2.A 3. A 4.A 5.A

6.B 7.B 8. C 9.A 10.B

11.C12.D13.C14.D15.B

16.C 17.A18.D 19.B 20.C

21. C 22. C 23. C 24. B 25. C

26.D 27.B28.B 29.A 30.B

二、简答题(每小题3分,共27分)

1. PUSH CX(1分)

PUSH BX(1分)

PUSH AX(1分)

2.程序最后一行有错,应写成:

CRAY ENDP (3分)

3.(1) ADD AX,BX (1分)

(2) ADD DL,[BX][SI](1分)

(3) ADD AH,5EH (1分)

4.MOV AX,10(1分)

MOV BL,10 (1分)

MOV CL,1 (1分)

5.(1)SBB AX,0520H(1分)

(2)MOV AX,SEG TABL(1分)

(3)MOV AX,OFFSET TABL(1分)

6.三种方法,对1个得1分,无先后顺序。

(1) LEA SI,D1

(2) MOV SI,OFFSET D1

(3) MOV SI,D2

7. (1) 0 (1分)

(2) 2 (1分)

(3)240 (1分)

8. 执行段内返回:

栈顶内容→IP,SP+2→SP (2分)

执行段间返回:

栈顶内容→IP,SP+2→SP (2分)

栈顶内容→CS,SP+2→SP (2分)

9. 程序最后一行有错,应写成:

CRAY ENDP (6分)

五、编制程序题

1.程序段:(10分)

DATA DW 20 DUP()

MOV AX,SEG DATA

MOV ES,AX

MOV DI,0

MOV CX,LENGTH DATA;

GOON:MOV DATA[DI],0

ADD DI,2

LOOP GOON

评分细则:

取地址正确(3分)

DI清0 (1分)

循环计数初值(2分)

累加(2分)

循环结构(2分)

2.程序段:(10分)

MOV AX,X

IMUL Y

SUB AX,Z

SBB DX,0

MOV W,AX

评分细则:

每条指令2分

3.程序段:(10分)

TEST AL , 00100001B

JZ ZERO

SUB AX,AX

JMP STOP

ZERO: SUB AX,BX

STOP:

评分细则:

每条指令2分

4.参考程序:(13分)

DATA SEGMENT

DAT DB -6

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

SQR DB

DATA ENDS

STACK SEGMENT PARA STACK

DW 20H DUP()

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,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

评分细则:

源程序框架(3分)

段寄存器DS赋值(1分)

子程序调用(1分)

子程序框架(2分)

判DAT中正负数及处理(2分)

查表(2分)

存结果(1分)

用户程序结束(1分)

5.参考程序:(13分)

DATA SEGMENT

X DW

AHEAD DW 2,5,7,89,100,200

AEND DW 288

N DW 35

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET AHEAD

L1: MOV AX,[SI]

CMP AX,N

JA L2 ;

MOV [SI-2],AX

ADD SI,2

CMP SI,OFFSET AEND

JBE L1

L2: MOV AX,N

MOV [SI-2],AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

评分细则:

段寄存器DS赋值(1分)

地址指针SI置初值(1分)

比较转移(2分)

后1个数移动到前1个数位置(2分)

SI指针加2(2分)

判断是否到最后(2分)

将N存入空出的位置(2分)

用户程序结束(1分)

6.参考程序:(13分)

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

评分:(1)判BUF1和BUF2内容为负数 2分(2)求绝对值 1分

(3)求和 1分

(4)存结果 1分

(5)指针(SI,DI,BX)设置及修改 3分

(6)循环正确 2分

(7)程序段结构 2分

(8)DS预置 1分

(9)用户程序结束 1分

第三章 8086汇编语言程序格式

第三章8086汇编语言程序格式 练习题 3.4.1 单项选择题 1.下列选项中不能作为名字项的是()。 A.FH B.A3 C.3B D.FADC 2.下列指令不正确的是()。 A.MOV AL,123 B.MOV AL,123Q C.MOV AL,123D D.MOV AL,123H 3.下列指令不正确的是()。 A.MOV BL,OFFSET A B.LEA BX,A C.MOV BX,OFFSET A D.MOV BX,A 4.若定义“BUF DB 1,2,3,4”,执行MOV AL,TYPE BUF 后AL=()。 A.0 B.1 C.2 D.3 5.若定义“A EQU 100”,执行“MOV AX,A”后,AX=()。 A.A的偏移地址B.A单元中的内容 C.100 D.A的段地址 6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。 A.10 B.20 C.22 D.24 7.若定义“C DD 2,4”,则该伪指令分配()个字节单元。 A.2 B.4 C.6 D.8 8、伪指令是()规定的汇编说明符,它在源程序汇编时进行说明。 A、DEBUG B、LINK C、MASM D、EDIT 9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()文件。 A..LST B..EXE C..MAP D..ASM 10.LINK命令执行后可以生成一个以()为扩展名的文件。 A.ASM B.EXE C.OBJ D.COM 11.一个段最大可定义()字节。 A.1M B.64K C.32K D.16K 12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选()。 A.BYTE B.WORD C.PARA D.PAGE 13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的()。 A.相同B.长C.短D.不定 14.宏指令与子程序相比,子程序调用的执行速度比宏指令的()。 A.相同B.快C.慢D.不定 15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响()的设定。 A.源程序B.目标程序C.汇编程序D.连接程序

汇编语言程序设计期末考试试卷及参考答案

【汇编语言程序设计】期末考试-试卷及参考答案

执行上述两条指令后,正确的结果是( B )。 A.(AX)=1001H; B.(AX)=0FFFH; C.(AX)=1000H; D.(AX)=0111H。 6.串指令中的目的操作数地址一定是由____A_ _提供。()A.ES:[DI] ; B.SS:[BP]; C.DS:[SI] ; D.CS:[IP]。 7.将DX的内容除以2,正确的指令是( C )。 A.DIV 2 ; B.DIV DX,2 ; C.SAR DX,1; D.SHL DX,1。 8. 用户为了解决自己的问题,用汇编语言所编写的程序,称为( B )。 A.目标程序; B.汇编语言源程序; C.可执行程序; D.汇编程序。 9.用一条指令仅实现将AX←BX+SI的方法是( D )。 A.XCHG AX,[BX][SI] ; B.MOV AX,[BX+SI]; C.LEA AX,BX[SI] ; D.LEA AX,[BX][SI]。 10.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( C )。 A.1FFFH; B.1998H; C.1FFEH; D.2002H。 2. C 二、指出下列指令的出错原因,并改正。(每小题2分,共12分) 1.MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或MOV BX,DX 2.MOV CS,AX;代码段寄存器CS不能作目的操作数,改正为MOV DS,AX 3.ADD AX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为 MOV BX,DS ADD AX,BX 4.TEST BX,[CX];不能使用CX实现寄存器间接寻址,改正为 MOV SI,CX TEST BX,[SI] 5.SUB [BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:MOV AX,[BX] SUB AX,[BP+SI] 或:MOV AL,[BX] SUB AL,[BP+SI] 6.SHL DX ;没有给出移位次数,改正为SHL DX,1或 SHL DX,CL 三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令的作用!每空3分,共18分) 1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并

汇编语言课后习题解答

第1章基础知识 检测点1.1(第9页) (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。 (2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。 (3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。 (4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。

(1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU 最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

汇编语言程序设计 知识点 V3.0

第一章 1、什么是汇编语言? 2、汇编语言程序设计过程:编辑源程序,编译(汇编),连接,运行调试 3、汇编语言特点?与机器语言一一对应,直接操作硬件,高效率(空间和时间,运行速度快,目标代码短,占用存储空间少) 4、数制转换 第2章8086计算机组织结构 1、计算机硬件系统组成:CPU、存储器、输入输出设备。 2、CPU组成:运算器、控制器、寄存器,运算器和控制器由芯片设计时设计好,不可做任何改动,程序设计员仅能在程序里使用寄存器,寄存器都有相应的名字,如AX,能在程序里直接使用寄存器是汇编语言区别于高级语言的最重要特点,这样就可以直接控制硬件系统。 3、总线结构:数据总线、地址总线、控制总线。数据总线分8位、16位、32位和64位等,多少位机就是以数据总线来划分,比如8位机、32位机。8086机是16位机,但地址总线是20位,地址总线数量决定了内存寻址空间的大小,如8086有20位地址线,那么寻址空间是:220=210*1K=1M,8086最大寻址空间为1MB,即地址范围:00000H~FFFFFH。控制总线主要传送控制信息,如读写操作,读写操作的主体是CPU,读操作是指CPU从内存或外设读取数据,写操作是指CPU把数据写到内存或外设中。 4、存储器:存储器的最小单元是字节(Byte,由8个位组成),字节的多少就是存储器的容量。每一个字节单元都有一个唯一的编号,这个编号就是字节单元的地址,此地址就是物理地址,对于8086而言,编号的形式为:XXXXXH,如85421H。如果要读写存储器,必须知道某一个字节单元的地址。多个字节单元可以组合成更大的单元(数),比如2个字节单元组合成一个字(Word),4个字节单元组合成一个双字(Double Word)等,规定:这个组合后的大单元是以最小字节单元地址为自己的地址。如85421H字节单元内容为12H,85422H 字节单元内容为34H,那么以85421H地址的字单元的内容就是3412H。 地址取最小字节单元的地址为大单元的地址。 内容排序按照“高高低低”原则:高字节放在高地址里,低字节放在低地址里。 详细请参看2.3节(P30页) 5、8086CPU寄存器 (1)通用类:AX(AH,AL)、BX(BH,BL)、CX(CH,CL)、DX(DH,DL) (2)段寄存器类:CS、DS、ES、SS (3)与偏移地址相关类:SI、DI、SP、BP (4)特殊类:IP、FLAGS 所有寄存器都是16位大小,通用类的16位又可看成2个8位的寄存器组成,区分为高8位(High)和低8位(Low),因此取名为AH和AL,其他类似。 CS:存放代码段段地址,DS:存放数据段段地址,SS:存放堆栈段段地址,ES:存放数据附加段段地址,一般作为DS的辅助使用,比如在一段程序里需要用到2个不同数据段的数据时,其中一个数据段段地址存放在DS中,另一个存放在ES中。 SI、DI:一般用于变址寻址方式,如[BX+SI]、[BX+DI], SP:堆栈段中堆栈栈顶的偏移地址,不可修改,由SS:SP逻辑地址始终指向堆栈的栈顶。 详细参看2.3.2,P32页 BP:一般也用于堆栈,可以作为SP的备份,通常也是用SS:BP逻辑地址表示,BP可以随意修改,因此通过SS:BP可以访问堆栈的任何地方。此外,BP还与BX一样,可以作为基地址

完整word版,汇编语言期末考试试题及

汇编语言模拟试题及答案 一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.指令JMP FAR PTR DONE属于参考答案为:C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 [解析]略 2.下列叙述正确的是参考答案为:C A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS 指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP 指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL 指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用 JAE/JNB指令 [解析]对于无符号数和有符号数的比较都采用CMP指令; CMPS指令是串比较指令; 对两个无符号数的条件转移指令应是:JAE、JNB、JBE、JNA;对两个有符号数的条件转移指令应是:JGE、JNL、JLE、JNG。

3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是参考答案为:C A.12CSBH B.12B6BH C.12C59H D.12BFEH [解析]末字与首字相隔(128-1=)127个字,且每个字占用2个字节,因此末字单元的物理地址应为: 首字单元的物理地址+(128-1)×2 即12ABH×10H+00ABH+(128-1)×2=12C59H。 4.在下列指令的表示中,不正确的是参考答案为:C A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL [解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项C 中的[BX],没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如 DEC BYTE PTR [BX]或DEC WORD PTR [BX] 但是在题目的选项C中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。5.在进行二重循环程序设计时,下列描述正确的是参考答案为:AA.外循环初值应置外循环之外;内循环初值应置内

汇编语言期末考试试题

一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一存储单元的实际地址称() A.段地址B.偏移地址 C.物理地址D.逻辑地址 2.某存储单元的物理地址是12345H,可以作为它的段地址有() A.2345H B.12345H C.12340H D.1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是() A.XOR BX,BX B.OR BX,BX C.AND BX,BX D.CMP BX,BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是() A.CX≠0且ZF=1B.CX≠0且ZF=0 C.CX≠0或ZF=1D.CX≠0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是() A.DAA校正指令的功能已自动加在AH中 B.进位值在AF中,校正后根据AF内容再加在AH中 C.进位值在CF中,校正后根据CF内容再加在AH中 D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中 6.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是() A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C.指令AND AX,OFH执行后,分离出AL低四位 D.NOT AX,执行后,将AX清0 7.在执行下列指令时,需要使用段寄存器DS的指令是() A.STOSW B.ADD AL,CL C.NEG BX D.INC DA[BX] 8.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是()A.ADD BH,01H B.OR BH,01H C.XOR BH,01H D.TEST BH,01H 9.完成对CL寄存器的内容乘以4的正确操作是() A.ROL CL,1B.MUL4 ROL CL,1 C.SHL CL,1D.MOV CL,2 SHL CL,1SHL CL,CL 10.下面各传送指令中,正确的是() A.MOV[DI],[SI]B.MOV[DX+DI],AL C.MOV WORD PTR[BX],0100H D.MOV AL,BX 11.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法() A.名字的第一个字符可以是大写英文字母及小写英文字母 B.名字的第一个字符可以是字母、数字及、@、_ C.名字的有效长度≤31个字符 D.在名字中不允许出现$

汇编语言知识点

第一章 十进制与二进制之间的转换(P2) 降幂法 除法 十进制与六进制之间的转换(P5) 降幂法 除法 补码表示:正数:采用符号—绝对值法 负数:先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示 补吗运算:二进制数按位求反后在末尾加1 第二章 一、存储容量 1K = 1024 =210 (Kilo)1M =1024K = 220 (Mega) 1G = 1024M = 230 (Giga) 1个二进制位:bit (比特)8个二进制位:Byte(字节)1Byte = 8bit 2个字节:1 Word (字)1Word = 2Byte = 16bit 二、存储单元地址和内容 1.存储器以字节(8 bit)为编程单位 2.每个字节单元都有唯一的地址编码 3.地址用无符号整数来表示(编程用十六进制表示) 4.一个字要占用相继的两个字节 5.低位字节存入低地址,高位字节存入高地址 6.字单元地址用它的低地址来表示 7.机器以偶地址访问(读/ 写)存储器 三、物理地址= 16 段地址+ 偏移地址 四、存储器的分段: 20 根地址线:地址范围00000H ~ FFFFFH (1MB) 机器字长16位:仅能表示地址范围0000H ~ FFFFH (64KB) 小段:每16个字节为一小段,共有64K个小段 段起始地址:小段首地址 段的大小:64K 范围内的任意字节 五、存储器的逻辑分段优点: 允许程序在存储器内重定位; 允许实模式程序在保护模式下运行; 有利于程序和数据的分离。 六、中央处理器8086/8088寄存器组: 通用寄存器 数据寄存器:AX,BX,CX,DX 变址寄存器:SI、DI 指针寄存器:SP、BP 控制寄存器:IP、FLAGS 段寄存器:CS、DS、SS、ES

《汇编语言程序设计》期末复习题答案_57431457509182192

《汇编语言程序设计》复习题(答案指导/带页号)一、选择(30题) 1.下列是8位带符号二进制数的补码,其中最大的是( B )。参见P22 A、10001000 B、00000001 C、00000000 D、11111111 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现 ( C )参见P157、158 A、占内存空间小,但速度慢 B、占内存空间相同,速度快 C、占内存空间大,但速度快 D、占内存空间相同,速度慢 3.数据定义为:EE DB 3,4 CC DW 3456H,6789H 执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B )参见P27、63、64 A、0304H B、5604H C、3404H D、3456H 4.有如下指令序列: MOV AL,95H MOV CL,2 SAR AL,CL 上述指令序列执行后,AL的内容是( D )参见P95 A、05H B、25H C、24H D、0E5H 5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )参见P23、15 A、A>B>C B、 A

汇编语言程序设计知识点

汇编语言程序设计知识点 第一章基础知识 (1)正负数的补码表示, 掌握计算机中数和字符的表示; 1、假设机器字长为8位,[+3]补 =00000011B,[-3]补= FD H 。 2、十六进制数0F8H表示的十进制正数为 248 ,表示的十进制负数为 -8。 3、8位二进制数被看成是带符号补码整数时,其最小值是 -128,最大值是 127 。 4、计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是ASCII 码,称为美国信息交换标准码。 第二章80x86计算机组织 (1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器 1、IP寄存器中保存的是?下一条指令的首地址 2、FLAGS标志寄存器中共有几位条件状态位?6位 3、有几位控制状态位?3位 4、标志寄存器分为哪2类?条件码,控制 5、哪个标志位用来控制可屏蔽中断请求是否被CPU响应?IF 6、键盘I/O、显示I/O和打印I/O分别对应16、10和17号中断。 (2)存储单元的地址和内容,存储器地址的分段,实模式下逻辑地址、物理地址的表示。 1、如果SS=6000H,说明堆栈段起始物理地址是60000H。 2、已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为1420H 。 3、如果数据段中一个内存单元对应的物理地址为3F756H,(DS)=3F00H,那么使用DS段寄存器指明该单元的段基值时,需要使用哪一个偏移量才能正确访问该单元756H。 4.如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H . 第三章80x86的指令系统和寻址方式 (1)与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址).数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS指令,与REPE/REPZ和REPNE/REPNZ

汇编语言期末考试试题及答案

汇编语言模拟试题及答案 一,单项选择题 (在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20 分) 1.指令JMP FAR PTR DONE 属于参考答案为:C A .段内转移直接寻址 B ?段内转移间接寻址 C .段间转移直接寻址 D ?段间转移间接寻址 [解析]略 2.下列叙述正确的是参考答案为:C A ?对两个无符号数进行比较采用CMP 指令,对两个有符号数比较用CMPS 指令 B ?对两个无符号数进行比较采用CMPS 指令,对两个有符号数比较用CMP 指令 C .对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL 指令 D .对无符号数条件转移采用JGE/JNL 指令,对有符号数条件转移用JAE/JNB 指令 [解析]对于无符号数和有符号数的比较都采用CMP 指令; CMPS 指令是串比较指令; 对两个无符号数的条件转移指令应是:JAE、JNB、JBE、JNA;对两个有符号数的条件转 移指令应是:JGE、JNL、JLE、JNG。 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH ,请给出这个数 据区最末一个字单元的物理地址是参考答案为:C A . 12CSBH B . 12B6BH C. 12C59H D . 12BFEH [解析]末字与首字相隔(128- 1 =) 127个字,且每个字占用2个字节,因此末字单元的物理地址应为: 首字单元的物理地址+( 128 —1) >2 即12ABHX 10H + OOABH +( 128 —1) X2 = 12C59H。 4.在下列指令的表示中,不正确的是参考答案为:C A . MOV AL ,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D . MUL CL [解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项C中的 [BX] ,没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如DEC BYTE PTR [BX] 或DEC WORD PTR [BX] 但是在题目的选项C 中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。 5.在进行二重循环程序设计时,下列描述正确的是参考答案为:A A .外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B ?外循环初值应置外循环之内;内循环初值应置内循环之内 C ?内、外循环初值都应置外循环之外

四川大学汇编语言程序设计20152016期末试题(附答案)

四川大学期末考试试题(闭卷) (2015——2016学年第 1 学期)A卷 课程号:课序号:课程名称:任课教师:成绩: 一、单项选择题(本大题共20小题,每小题1分,共20分)提示: 评阅教师得分 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在 下面的表格中。错选、多选或未选均无分。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1.以下寄存器中,哪一个不属于地址指针寄存器?( A ) (A)AX (B)BX (C)SI (D)DI 2.以下标志位中,哪一个不属于状态标志位?( C ) (A)CF (B)OF (C)IF (D)AF 3.以下寄存器中,哪一个用于指示堆栈的栈顶位置?( C ) (A)IP (B)SI (C)SP (D)BX 4.以下寄存器中,哪一个用于提供代码段的段基值?( C ) (A)SS (B)DS (C)CS (D)AX 5.以下指令中,不影响标志位的是哪一条?( D ) (A)INC (B)AND (C)SUB (D)XCHG 试卷编号:

二、多项选择题(本大题共5小题,每小题2分,共10分)提示:在 每小题列出的五个备选项中有二个至五个是符合题目要求的,请将其代码填写 在下表中。错选、多选、少选或未选均无分。 1 2 3 4 5 1.以下哪些指令会影响CF 标志位?( CD ) (A )INC (B )DEC (C )AND (D )SUB (E )JC 2.以下指令中,哪些会访问堆栈段?( ABDE ) (A )CALL (B )RET (C )JMP (D )PUSH (E )POPF 3.假设(AL )=92H ,CF=1,执行指令ADC AL,88H 后,以下结果哪些是正确的? ( ACE ) (A )(AL)=1BH (B )(AL)=1AH (C )CF=1 (D )OF=0 (E )ZF=0 4.假设(AL )=86H ,执行指令SAR AL,1后,以下结果哪些是正确的?( ACDE ) (A )(AL)=0C3H (B )(AL)=0CH (C )CF=0 (D )OF=0 (E )PF=0 5.以下指令中,哪些使用了存储器寻址方式?( BCD ) (A )ADD AL,02H (B )SUB BL,[0104H] (C )INC BYTE PTR [BX] (D )AND AL,[SI] (E )XOR BL,CL 三、判断改错题(本大题共5小题,每小题4分,共20分)提示:下 列各语句可能有语法错误,判断各语句正确与否,对于错误的语句,需解释其错误的原因,对于正确的语句,若做出正确判断则给4分,对于错误的语句,做出正确判断给2分,做出正确的解释再给2分。 1. NEG 145 X NEG 指令不能跟立即数 2. JZ BX X 条件转移指令JZ 不能寄存器寻址,只能跟标号 评阅教师 得分 评阅教师 得分

汇编语言知识大全

第一章基础知识: 一、机器码:1、计算机只认识0,1两种状态。而机器码只能由0,1组成。故机器码相当难认,故产生了汇编语言。 2、其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其她符号(编译的时候有用)。 每一总CPU都有自己的指令集;注意学习的侧重点。 二、存储器:1、存储单元中数据与指令没任何差别。 2、存储单元:Eg:128个储存单元(0~127)128byte。 //1字节=1B=1byte=8bit 条件反射:1存储单元=1B=8个2进制;以后的ax,cs 之类的占两个存储单元, ah之类的占一个 3、CPU对存储器的读写:地址信息+控制信息+数据信息 三、总线: 1、地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。 //因为一根总线只能表示0,1,N根的话可以表示2^N 2、数据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3、控制总线:cpu对元器件的控制能力。越多控制力越强。

四、内存地址空间:1、由地址总线决定大小。 2、主板:cpu与核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3、接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。 4、各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控她们的时候,把她们都当作内存来对待,把她们总的瞧作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作就是一样的,但就是在cpu,内存,芯片之间的硬件本身所牵扯的线就是不同的。所以一些地址的功能就是对应一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而寄存器就是可以用来指令读写的部件。8086有14个寄存器(都就是16位,2个存储空间)。 一、通用寄存器(ax,bx,cx,dx),16位,可以分为高低位

汇编语言期末试题

一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.指令JMP FAR PTR DONE属于参考答案为:C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 [解析]略 2.下列叙述正确的是参考答案为:C A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令[解析]对于无符号数和有符号数的比较都采用CMP指令; CMPS指令是串比较指令; 对两个有符号数的条件转移指令应是:JAE、JNB、JBE、JNA; 对两个无符号数的条件转移指令应是:JGE、JNL、JLE、JNG。 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是参考答案为:C A.12CSBH B.12B6BH C.12C59H D.12BFEH [解析]末字与首字相隔(128-1=)127个字,且每个字占用2个字节,因此末字单元的物理地址应为: 首字单元的物理地址+(128-1)×2 即12ABH×10H+00ABH+(128-1)×2=12C59H。 4.在下列指令的表示中,不正确的是参考答案为:C A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL [解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项C中的[BX],没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如DEC BYTE PTR [BX] 或DEC WORD PTR [BX] 但是在题目的选项C中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。 5.在进行二重循环程序设计时,下列描述正确的是参考答案为:A A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 [解析]循环参数置初值,应在进入循环以前给出。

汇编语言部分知识点整理

8大通用寄存器: EAX累加器常用、放数据 EBX基址寄存器常用、放地址 ECX计数器少用、多用于循环操作、控制循环次数egloop EDX数据寄存器常用!放数据(要输出的字符串地址放在DX、字符的ASCII码放在DL里ESI 源变址寄存器放源操作数(数组或字符串)的地址即指向他 EDI目的变址寄存器放目的操作数(数组/字符串)的地址即指向他 EBP 基址指针寄存器一般不用,指向堆栈区域的数据,主要用于在子程序中访问通过堆栈传递的参数和局部变量 ESP堆栈指针寄存器指向栈顶的数据,在涉及堆栈操作的指令中自加自减,一般不能自主变化。 6大段寄存器: CS 代码段,存放程序中的指令代码 SS 堆栈段,指明程序使用的堆栈区域 DS 数据段,存放当前运行程序所用的数据 ES 附加数据段特别的:专为处理数据串设计的串操作指令必须使用附加数据段作为其目的操作数的存放区域。 FS 附加数据段 GS 附加数据段 另外两个常用寄存器: FLAGS状态寄存器:CF(进位)ZF(零)OF(溢出)PF(奇偶)SF(符号) AF(调整一般不用)(DF IF) IP 16位(EIP 32位)指令指针寄存器,专门用来存放将要执行的指令在主存中的位置。特别的EIP有自动增量功能。一般不能改,不可中断。但可以调整其指令执行顺序实现循环 MASM操作符:对常量、变量、地址等进行操作的关键字。 Eg:+ - * / offset(取得变量的偏移地址) 程序模板: ;example.asm in DOS .model small .486 .stack (可以没有) .data (可以没有) ……;数据定义eg:msg db ‘hello,Sarah!54581415’ .code ;定义代码段 .startup ;程序执行开始,同时设置数据段寄存器DS指向程序的数据段 ……;主程序eg:mov dx,offset msg ……等等 …… …… .exit ;程序执行结束,返回DOS ……;子程序(可以没有) .end ;汇编结束

汇编语言期末试卷复习(附答案)

选择题 1. 已知X=78,Y= -83则[X+Y]补=() A.0F5H B.0A1H C.0FBH D.65H 2. MOV AX, ES:COUNT[DI] 源操作数的寻址方式是() A.基址寻址 B.立即寻址 C.变址寻址 D.基址变址寻址 3. 指令MOV BX, MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为() A.17500H B.16500H C.14500H D.13500H 4. 下列四组寄存器中,在段内寻址时可以提供偏移地址的寄存器组是() A.AX,BX,CX,DX B.BP,SP,IP,CS C.BX,BP,SI,DI D.BH,BL,CH,CL 5. 当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是() A. 表示结果中含1的个数为偶数 B. 表示结果中含1的个数为奇数 C. 表示该数为偶数 D. 表示结果中低八位含1的个数为偶数 6. 下列传送指令中,有语法错误的指令是()。 A.MOV CS,AX B.MOV DS,AX C.MOV ES,AX D.MOV SS,AX 7. MOV SP,3210H PUSH AX执行上述指令序理后,SP寄存器的值是()。 A.3211H B. 320EH C.320FH D. 3212H 8. 设(DH)=20H,执行NEG DH指令后,正确的结果是() A.(DH)=20H CF=1 B.(DH)=20H CF=0 C.(DH)=0E0H CF=0 D.(DH)=0E0H CF=1 9. 执行下面指令序列后,结果是() MOV AL,82H CBW A.AX=0FF82H B.AX=8082H C.AX=0082H D.AX=0F82H

汇编语言平时练习(判断题)

假设存储器中从7462H单元开始的四个相邻字节单元中的容依次是32H,46H,52H,0FEH,则存放字数据0FE52H的字地址是7465H。 错误 4.知识点:0303(80x86的指令系统) MOV指令不影响标志位。 正确 5.知识点:0303(80x86的指令系统) 无条件转移指令对标志位无影响,而条件转移指令对标志位有影响。 正确 6.知识点:0303(80x86的指令系统) 指令IN AL,DX是合法的指令。 正确 7.知识点:0303(80x86的指令系统) 当运算结果的低8位中有偶数个1 时, 奇偶标志位PF被置为1。 正确 9.知识点:0301 (80x86的寻址方式) 可以将一个存储器操作数与另一个存储器操作数相加。 错误 10.知识点:0303(80x86的指令系统) 在“IN AL,端口地址”指令中,端口地址指定了某个外部设备接口的I/O地址,它实际上是一个立即数,其围为0~65535。 答案:错误 11.知识点:0401(汇编程序功能) 汇编程序和汇编语言源程序是不同的概念。 答案:正确 12.知识点:0301 (80x86的寻址方式) 相对于某起始地址的偏移量称为偏移地址。 答案:正确 13.知识点:0303(80x86的指令系统) 只能使用PUSH,POP类的指令对堆栈段的容进行操作。 14.知识点:0301 (80x86的寻址方式) 立即数寻址方式不能用于目的操作数字段。 错误 15.知识点:0203(中央处理机) BP是堆栈栈顶指针寄存器。 错误

存中字单元的地址必须是偶数地址。 答案:错误 17.知识点:0303(80x86的指令系统) PUSH AL。 正确 19.知识点:0303(80x86的指令系统) SHR AX,CX。 正确 20.知识点:0401(汇编程序功能) 汇编程序是用汇编语言编写的汇编语言源程序。 答案:错误 22.知识点:0301 (80x86的寻址方式) 不能给段寄存器进行立即数方式赋值。 正确 23.知识点:0303(80x86的指令系统) 串操作指令一般用CX存放长度。 错误 24.知识点:0204(存储器) 因为有段寄存器,所以存储器要分段。 答案:错误 25.知识点:0303(80x86的指令系统) 逻辑右移1位和算术右移1位的效果是一样的。 答案:错误 26.知识点:0402(伪操作) 在变量定义是,可以通过使用ORG伪指令指定变量在段中存储时的偏移量。 正确 27.知识点:0303(80x86的指令系统) 指令SHR AX,4可以将AX的容逻辑右移4位。 答案:错误 28.知识点:0303(80x86的指令系统) CMP AX,BX执行的操作时(AX)-(BX),但结果不保存,只改变标志寄存器中标志位的值。正确 29.知识点:0402(伪操作) ASCII DW ‘ABCD’。 答案:错误 30.知识点:0303(80x86的指令系统) MOV SI,[SI]。

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法 一、汇编源程序的建立 1. 使用工具 (1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文 件; (2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件- 目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表; (3)Link连接程序,对使用的目标文件和库文件进行连接,生 成.exe文件,同时调试用.map-地址映像文件; 如果源程序无语法错误,上述三步将生成可运行的.exe文件, 如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存 在错误,需要进行调试。 (4)Debug调试程序,对.exe文件进行调试,修改,直到程序正 确。 图3 目标程序生成步骤图2. 编程过程 (1)用文本编辑软件,编写扩展名为.asm的源文程序文件。 (2)用汇编程序对编好的源文件进行汇编。 命令行:masm [*.asm] ↙ 如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。 使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。 *.obj-目标文件,用于连接生成可执行文件; *.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于

调试; *.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。 (3)目标文件的连接 命令行:link [*.obj] [*.obj] [*.lib] ↙ 连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。 *.map-地址映像文件,给出内存地址分配的有关信息。 下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。 (4)执行程序 执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。 二、汇编程序的调试

汇编语言程序设计复习

知识点 第一章基础知识 (1)正负数的补码表示, 掌握计算机中数和字符的表示; eg.假设机器字长为8位,[+3]补=00000011B,[-3]补= 11111101 H 。 十六进制数0FFF8H表示的十进制正数为65528D,表示的十进制负数为-8D。 8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127 。 第二章80x86计算机组织 (1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器 eg: IP寄存器中保存的是?代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?陷阱标志,中断标志。 (2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。 eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。 已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。 如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H . 第三章80x86的指令系统和寻址方式 与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS 指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。eg.【习题3.8】假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,

相关主题
文本预览
相关文档 最新文档