汇编复习资料
健尐 2009-01-01 10:17:51 1.列出8086下所有寄存器及名称,指出哪些是通用寄存器。
2.IP寄存器、FLAG寄存器有什么作用?
3.在8086机器中有几个段寄存器?分别是什么?有什么作用?
4.8086机器的字长是几位?
5. 试说明实模式下存储器如何寻址?P26 段地址+偏移地址的形式
6.什么是物理地址,什么是段地址,什么是有效地址?
7.实模式下,段地址和偏移地址为3017:000A的存储单元物理地址是?
8.下列操作可使用哪些寄存器?
(1)加法和减法
(2)循环计数
(3)乘法和除法
(4)保存段地址
(5)表示运算结果为0
(6)将要执行的指令地址
(7)将要从堆栈取出数据的地址
9.课本P34 2.9题1.(M) 2.(C) 3.(D) 4.(B) 5.(A) 6.(L) 7.(K) 8.(J) 9.(F) 10.(H) 11.(G) 12.(E) 13.(I) 14.(O) 15.(N)
10.名词解释:1).二地址指令 2).数据传送指令 3).进栈/出栈 4)伪操作
11.画出一个2地址指令的格式
12.与数据相关的寻址方式有哪些?分别是什么?举例说明
13.哪些寄存器可以作为内存寻址方式下保存地址的寄存器?
14.与转移相关的寻址方式(指令跳转)有哪些?
15.mov执行什么操作?
16.给各段寄存器传送地址时必须使用中转寄存器,这个格式是?
(mov ax, 段地址
mov段寄存器, ax)
17.判断下列语句错在那里?
1) mov 01,al
2) A db ?
mov AX, A
3) A db ?
B db ?
mov A, B
4) shr AX,3
5) pop 1234H
6) pop cs
7) XCHG A, B
8) mov AX, [CX]
9) IMUL AX,BX
10) DIV AX,BX
18. 计算两个32位有符号数X,Y的和,应该如何实现?减法呢?
X DW 1433H
DW 015FH
Y DW 112AH
DW 001CH
…
19. 计算(V-(X×Y+Z-540))/X, X,Y,V,Z都是16位有符号数,如何编写程序实现?
20.试根据以下要求写出相应的汇编语言指令
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器
(2)用寄存器BX和SI的基址变址寻址方式,把存储器中的一个字节与AL寄存器的内容相加,并把结果送入AL寄存器
(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中
(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中
(5)把数0B5H与(AL)相加,并把结果送回AL
21.写出把受地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求适用下列几种寻址方式:
(1)寄存器间接寻址
(2)寄存器相对寻址
(3)基址变址寻址
22.现有(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H, 试说明下列各条指令执行完后AX寄存器的内容。
(1)mov AX, 1200H
(2)mov AX, BX
(3)mov AX, [1200H]
(4)mov AX, [BX]
(5)mov AX, 1100[BX]
(6)mov AX, [BX][SI]
(7)mov AX, 1100[BX][SI]
23.如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器中的内容是什么?
MOV AX, TABLE
LEA AX, TABLE
24.执行下列指令后,AX寄存器中的内容是什么?
TABLE DW 10,20,30,40,50
ENTRY DW 3
…
MOV BX, OFFSET TABLE
ADD BX, ENTRY
MOV AX,[BX]
25. 请说明JMP DI和 JMP [DI]的区别。
26. 假定(dx)=0B9H, (CL)=3,(CF)=1 ,下列指令单独执行,DX值为多少?
(1)SHR DX,CL
(2)ROR DX,CL
(2)RCL DX,CL
27.汇编语言程序从建立到生成可执行文档的过程如何?
28.汇编程序的主要功能是什么?
29.各种伪操作有什么?有什么作用?
30.可以用于源程序表示名字的字符集是什么?
31.数值回送操作符有哪些?有什么作用?
32.属性操作符有什么?有什么作用?
33.有符号定义语句如下:
BUFF DB 1,2,3,’123’
EBUFF DB 0
L EQU EBUFF-BUFF
问L的值是多少?
34.对于下面的数据定义,各条mov指令单独执行后,有关寄存器的内容是什么?
FLDB DB ?
TABLEA DW 20 DUP(?)
TABLEB DB ‘ABCD’
(1) MOV AX, TYPE FLDB
(2) MOV AX, TYPE TABLEA
(3) MOV CX, LENGTH TABLEA
(4) MOV DX, SIZE TABLEA
(5) MOV CX, LENGTH TABLEB
35. 试画出 A DB 3 dup(‘1,3’,3 dup(3))的内存情况
36. LES DI, [BX]
40H
00H
00H
60H
…
30H
50H
00H
20H
(DS):1000H (SI)=0010H
(DI)=3000H (BX)=0004H,
指令执行完毕,bx,di值为多少?
ds,es段寄存器值为?
37.假设程序中的数据定义如下:
LNAME DB 30 DUP(?)
ADDRESS DB 30 DUP(?)
CITY DB 15 DUP(?)
CODE_LIST DB 1,7,8,3,2
(1)用一条MOV指令将LNAME的偏移地址放入AX中
(2)用一条指令将CODE_LIST的头两个字节放入SI
(3)写一条伪操作使CODE_LENGHT的值等于CITY的实际长度
38. 给出等值语句如下:
ALPHA EQU 100
BETA EQU 25
GAMMA EQU 2
下列表达式的值是多少?
(1)ALPHA*100+ BETA
(2)ALPHA MOD GAMMA+ BETA
(3)(ALPHA+2)*BETA-2
(4)(BETA/3)MOD 5
(5)BETA AND 7
(6)GAMMA OR 3
39.循环程序由哪几部分构成?
40.把AX寄存器中的16位数分成4组,每组4位,把这四组数分别放在AL, BL, CL和DL中。
41.比较两个字符串STRING1和STRING2所含字符是否相同,若相同,则输出MATCH,若不同,则输出NO_MATCH
42.在过程间传递参数的方法有几种?
43.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来