1.填空题
(1)8086 CPU段寄存器命名如下:
代码段寄存器命名为( ); 数据段寄存器命名为( );
堆栈段寄存器命名为( ); 附加段寄存器命名为( )。
(2)编写程序时使用的地址称为逻辑地址,它由( )和( )两部分组成。
(3) 汇编语言的语句由4个部分组成,即( )域、( )域、( )域和( )域。
(4)主程序与子程序之间的参数传递方法有( )、( )和( )、( )。
(5 )指令 MOV AX,ALPHA[BP][DI] 中,默认使用的段寄存器是 ( )。
2.比较子程序调用与中断调用的异同
3.阅读下列程序,回答所提出的问题
MOV AX,- 2
MOV BX,1000H
MOV DS:[2000H],AX
INC WORD PTR [BX]
XCHG AX,BX
INC BX
ADD AX,BX
程序执行完后,下列寄存器及内存单元的内容分别是多少?
AX =
BX =
DS:[2001H,2000H] =
4. 已知DATA数据段定义如下:
DATA SEGMENT
STR1 DB 0,1,2,3
STR2 DB ‘0123’
NUMB DB 3 DUP(2)
POIN DW 0,1
DATA ENDS
画出此数据段中数据存储的形式图。
5. 在下述程序段的每一空内添入一个语句(不得修改其它语句),以实现下述功能:在段名为DATA的数据段中,有一个无序的字节数据序列存放在BUFFER字节缓冲区中,序列长度存放在缓冲区的第一个字节。检查该序列,若没有与字节变量KEY同值的数据,就将其加到序列末尾,并将序列长度增1 ;若有则不作任何操作。
MOV DS,AX
MOV ES:AX
LEA DI,BUFFER
MOV CH,0
INC DI
CLD
REPNZ SCASB
JE DONE
MOV [DI],AL
DONE: ……
6. 编写完整的源程序实现下述功能:有一个ASCII字符串,其起始地址存放在变量STRING中,要求从串中取出每一个字符,检查所包含的二进制位为“1”的个数,若为奇数,则在该字符的最高位置“1”,然后将字符送回原处。