第三章:8086/8088指令系统

1. 指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快?

数据操作数的寻址方式有 7 种,分别为:立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,寄存器相对寻址,基址加变址寻址和相对基址加变址寻址。

其中寄存器寻址的指令执行速度最快。

2. 直接端口寻址,间接端口寻址的特点?

8086CPU 在进行 I/O 端口访问时,有效地址线为 A15~A0,即 16 条地址线可访问 64K 个字节 I/O 端口。若仅用 16 条地址线的低 8 位地址进行访问 I/O 端口称为直接端口寻址,若 16 条地址线全用于访问I/O 端口称为间接端口寻址。在直接端口寻址操作中,8 位地址操作数可直接出现在 IN/OUT 指令中。在间接端口寻址操作中,16 位地址操作数应先赋给寄存器 DX,IN/OUT 指令中仅出现间接地址 DX。

3. 存储器寻址中间址寄存器的使用特点?

存储器寻址中可用的间址寄存器有 BX、BP、SI、DI,

当存储器间址寻址时,BX、SI、DI 对应的缺省段是 DS;BP 对应的缺省段是 SS。

当存储器基址变址寻址时,BX+SI、BX+DI 对应的缺省段是 DS;BP+SI、BP+DI 对应的缺省段是 SS。

4. MOV 指令中源、目的操作数的禁用特点?

立即数不能作目的操作数;寄存器 CS、IP 不能作目的操作数;

源、目的操作数不能同时为存储器操作数;

源、目的操作数不能同时为段寄存器操作数;

立即数不能赋给段寄存器。

5. CMP 指令对状态标志位的影响?

当两操作数比较是否相等时,影响状态标志位 ZF,当两数相等时 ZF=1,反之 ZF=0。当两操作数比较大小时,无符号数比较和有符号数比较会影响不同的状态标志位。若无符号数比较,当目的操作数小于源操作数时 CF=1,反之 CF=0。若有符号数比较,当目的操作数小于源操作数时 OF⊕SF=1,反之 OF⊕SF=0。

6. 串操作指令中的专用寄存器?

专用源操作数串寄存器:串存放段寄存器 DS、串指针寄存器 SI。专用目的操作数串寄存器:串存放段寄存器 ES、串指针寄存器 DI。专用串操作数数量计数器 CX。

专用串指针自动移动方向控制标志 DF。

7. 串操作中控制标志 DF、指令尾符 B、W 的使用特点?

当控制标志 DF=0 时,串指针 SI、DI 为自动增址方式。当控制标志 DF=1 时,串指针 SI、DI 为自动减址方式。当尾符为 B 时,为字节串操作,自动增、减址量为±1。当尾符为 W 时,为字串操作,自动增、减址量为±2。

8. JMP 指令对目的 CS:IP 的影响?

当 JMP 指令为段内无条件转移时,目的 CS 不变仅影响目的 IP。

当 JMP 指令为段间无条件转移时,将影响目 CS 和目的 IP。

9. 指令 CALL 和 INT 的相同点和不问点?

相同点均为调用一段功能程序,且都需要保护断点(现场)和恢复现场。

不同点是保护断点(现场) 和恢复现场的内容不同,若 CALL 为近调用则仅需保护和恢复 IP。若 CALL 为远调用则仅需保护和恢复 CS、IP。而 INT 需保护和恢复 PSW、CS、IP。

第四章:汇编语言程序设计

1. 什么是变量,变量有哪三个属性?

变量通常指存放在存储单元里的值,在程序运行中是可以修改的。所有的变量都具有以下三个属性: 段属性、偏移属性、类型属性。

2. 在汇编语言程序中,变量和标号有几种属性,各有什么含义

各有 3 种属性,分别是段属性、偏移属性和类型属性。

段属性是指变量和标号所在的段对应着段寄存器的内容。偏移属性是指变量和标号在相应段内的偏移地址。变量的类型属性是指字节、字、双字等数据宽度。标号的类型属性是指远(FAR)、近(NEAR)。

3. 指令助记符、伪指令、标识符在汇编语言中的作用?

汇编语言的源程序设计中,用指令助记符表示指令机器码,用伪指令管理整个源程序,用标识符表示存储器真实地址。源程序经汇编后,指令助记符被翻译为指令机器码,伪指令无任何翻译结果,而标识符则用真实地址替换。

4. 解释指令助记符、汇编语言、汇编语言程序、汇编程序的含义?

  • 指令助记符:人们采用便于记忆并能描述指令功能的符号来表示指令机器码,该符号称指令助记符。
  • 汇编语言:用指令助记符表示的指令以及使用它们编写程序的规则就形成汇编语言。
  • 汇编语言程序:用汇编语言书写的程序就是汇编语言程序。
  • 汇 编 程 序:汇编语言程序要翻译成机器语言程序才可以由处理器执行,这个翻译的过程称为“汇编”,完成汇编工作的程序就是汇编程序(MASM.EXE)。

5. 在计算机上运行汇编语言程序的步骤是什么?

(1) 用编辑文件如 EDIT 编辑源文件,形成.ASM 文件。

(2) 用汇编程序(MASM.EXE)把.ASM 源文件汇编成目标文件.OBJ。

(3) 用连接程序(LINK.EXE)把.OBJ 文件转换成.EXE 可执行文件。

(4) 运行可执行文件.EXE。

(5) 若有错,使用 DEBUG 进行调试。

6. 什么是系统调用,如何进行系统调用?

系统调用就是 DOS 调用中的 INT 21H 调用。

其过程是:(1)置入口参数;(2)将系统功能号送入 AH;(3)执行系统调用 INT 21H。

7. 伪指令 END、ENDS、ENDP、ENDM 的作用?

END 为汇编源程序结束伪指令,出现在汇编源程序的最后一行。ENDS 为段定义结束伪指令,出现在段定义的最后一行。ENDP 为过程定义结束伪指令,出现在过程定义的最后一行。ENDM 为宏定义结束伪指令,出现在宏定义的最后一行。