1、 1 第 1 章 计算机基础知识 3. 填空: (1) (1234)10 ( )2 ( )16 (2) (34.6875)10 ( )2 ( )16 (3) (271.33)10 ( )2 ( )16 (4) (101011001001)2 ( )10 ( )16 (5) (1AB.E)16 ( )10 ( )2 (6) (10101010.0111)2 ( )10 ( )16 【解】 (1) (1234)10 ( 10011010010 )2 ( 4D2 )16 (2) (34.6875)10 ( 100010.1011 )2 ( 22.B )16 (3) (271.33)10 ( 1000
2、01111.010101 )2 ( 10F.54 )16 (4) (101011001001)2 ( 2761 )10 ( AC9 )16 (5) (1AB.E)16 ( 427.875 )10 (110101011.111 )2 (6) (10101010.0111)2 ( 170.4375 )10 ( AA.7 )16 4. 已知 X=36, Y= 136, Z= 1250,请写出 X、 Y、 Z 的 16 位原码、反码和补码。 【解】 X原 0000 0000 0010 0100 Y原 1000 0000 1000 1000 Z原 1000 0100 1110 0010 X反 0000
3、0000 0010 0100 Y反 1111 1111 0111 0111 Z反 1111 1011 0001 1101 X补 0000 0000 0010 0100 Y补 1111 1111 0111 1000 Z补 1111 1011 0001 1110 5. 已知 X补 =01010101B, Y补 =10101010B, Z补 =1000111111111111B,求 X、 Y、 Z及 X Y、Y Z 的十进制值为多少 ? 【解】 Y Z 运算时 Y 需要扩展符号位 X 85 Y 86 Z 28673 X Y 01010101B 10101010B 11111111B 1 Y Z 11
4、111111 10101010B 10001111 11111111B 11111111 10101010B 01110000 00000001B 0110 1111 1010 1011B 28587 2 8. 将下列 8421BCD 码表示为十进制数和二进制数: (1) 01111001 (2) 001010000101 (3) 011000000111 (4) 010110010000 【解】 (1) 79, 1001111B (2) 285, 100011101B (3) 607, 1001011111B (4) 590, 1001001110B 12. 微型计算机由哪几部分组成,各部分
5、的功 能是什么? 【解】微型计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成。 运算器完成算术运算和逻辑运算;控制器分析命令并指挥协调各部件统一行动完成命令规定的各种动作或操作;存储器存放原始数据、中间结果和最终结果以及程序;输入设备、输出设备与外界交换信息。 13. CPU 在内部结构上由哪几部分组成, CPU 应具备什么功能? 【解】微处理器( CPU)由运算器和控制器组成。 CPU 应具备的功能:对数据进行处理并对处理过程进行控制。 17. 如果某几种 CPU 的地址总线分别有 8、 16、 20、 32 条,它 们各自能寻址的存储器的容量是多少? 【解】地址总线 8 条:
6、 28 256B 地址总线 16 条: 216 64KB 地址总线 20 条: 220 1MB 地址总线 32 条: 232 4GB 18. 什么是硬件,什么是软件,硬件和软件的关系如何? 【解】硬件是指组成计算机的各种电子的、机械的、光磁学的物理器件和设备,它们构成了计算机的物理实体。软件则是指为了运行、管理和维护计算机而编制的各种程序及其有关的文档资料的总称。硬件是基础,软件是灵魂,两者既相互独立,又相互依存,缺一不可。硬件和软件合起来才组成一个完整的计算机系统。 19. 说明位、字节、字长的概念及它们之间的关系。 【解】 (1) 位( bit)。位是计算机所能表示的最基本最小的数据单位。
7、它只能有两种状态“ 0”和“ 1”,即二进制位。 (2) 字( Word)。计算机中作为一个整体参与运算、处理和传送的一串二进制数,是计算机中信息的基本单位。 (3) 字长 (Word Length)。计算机中每个字所包含的二进制位数称为字长。 它们之间的关系:字由位构成,字长指每个字所包含的位的个数。 1. 8086 CPU 由哪两部分构成,它们的主要功能是什么 ?在执行指令期间 ,EU 能 直接访问存储器吗,为什么 ? 【解】 8086CPU 由执行部件( EU)和总线接口部件( BIU)两部分组成。 执行部件由内部寄存器组、算术逻辑运算单元( ALU)与标志寄存器( FR)及内部控制逻辑
8、等三部分组成。寄存器用于存储操作数和中间结果;算术逻辑单元完成 16 位或 8 位算术逻辑运算,运算结果送上 ALU 内部数据总线,同时在标志寄存器中建立相应的标志;内部控制3 逻辑电路的主要功能是从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。 总线接口部件( BIU)负责 CPU 与 存储器、 I/O 设备之间传送数据、地址、状态及控制信息。 每当 EU 部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。EU 要花几个时钟周期执行指令,指令执行中若需要访问内存或 I/O 设备, EU 就向 BIU 申请总线周期
9、,若 BIU 总线空闲,则立即响应,若 BIU 正在取一条指令,则待取指令操作完成后再响应 EU 的总线请求。 3. 8086 CPU 中有哪些寄存器,各有什么用途? 【解】 8086 共有 8 个 16 位的内部寄存器,分为两组: 通用数据寄存器。四个通用数据寄存器 AX、 BX、 CX、 DX 均可用作 16 位寄存器也可用作 8 位寄存器。用作 8 位寄存器时分别记为 AH、 AL、 BH、 BL、 CH、 CL、 DH、 DL。 AX( AH、 AL)累加器。有些指令约定以 AX(或 AL)为源或目的寄存器。实际上大多数情况下, 8086 的所有通用寄存器均可充当累加器。 BX( BH
10、、 BL)基址寄存器。 BX 可用作间接寻址的地址寄存器和基地址寄存器, BH、 BL可用作 8 位通用数据寄存器。 CX( CH、 CL)计数寄存器。 CX 在循环和串操作中充当计数器,指令执行后 CX 内容自动修改,因此称为计数寄存器。 DX( DH、 DL)数据寄存器。除用作通用寄存器外 ,在 I/O 指令中可用作端口地址寄存器,乘除指令中用作辅助累加器。 指针和变址寄存器。 BP( Basic Pointer Register)基址指针寄存器。 SP( Stack Pointer Register)堆栈指针寄存器。 SI( Source Index Register)源变址寄存器。 D
11、I( Destination Index Register)目的变址寄存器。 BP、 SP 称为指针寄存器,用来指示相对于段起始地址的偏移量。 BP 和 SP 一般用于堆栈段。 SI、 DI 称为变址寄存器,可用作间接寻址、变址寻址和 基址变址寻址的寄存器。 SI 一般用于数据段, DI 一般用于数据段或附加段。 标志寄存器( FR):是一个 16 位寄存器,算术逻辑单元进行算术逻辑运算后,在标志寄存器中建立相应的标志。 段地址寄存器( CS、 DS、 SS、 ES)。用于存放段地址,根据其主要用途,分为代码段寄存器 CS、数据段寄存器 DS、堆栈段寄存器 SS、附加段寄存器 ES。 代码段寄
12、存器 CS:代码段是存放程序代码的存储区域,代码段寄存器用来存放代码段存储区域的起始地址。 数据段寄存器 DS:数据段是存放程序中所使用的数据的存储区域,数据段寄存器用来存放程序的数 据存储区的起始地址。 堆栈段寄存器 SS:堆栈段寄存器用来存放堆栈存储区的起始地址。由堆栈段寄存器 SS与堆栈指针寄存器 SP 来确定当前堆栈指令的操作地址。 附加段寄存器 ES:附加段是为某些字符串操作指令存放目的操作数而设置的一个附加的4 数据段,附加段寄存器用来存放该附加数据段存储区域的起始地址。 指令指针寄存器( IP)。又称程序计数器,是 16 位寄存器。 IP 中存放当前将要执行的指令的有效地址,每取
13、出一条指令 IP 自动增量,即指向了下一条指令。 指令队列缓冲器:是一个与 CPU 速度相匹配的高速缓冲寄存器。在 EU 执行指令的 同时,BIU 可以从内存中取出下一条或下几条指令放到指令缓冲器中, EU 执行完一条指令后,可以立即从指令缓冲器中执行下一条指令。 4. 状态标志与控制标志有何不同,程序中是怎样利用这两类标志的?标志寄存器有哪些标志位,各在什么情况下置位 ? 【解】状态标志根据算术逻辑运算结果由硬件自动设定,它们反映运算结果的某些特征或状态,可作为后继操作(如条件转移)的判断依据。控制标志由用户通过指令来设定,它们可控制机器或程序的某些运行过程。 标志寄存器的内容如下: 15
14、14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF - AF - PF - CF CF( Carry Flag)进位标志,反映在运算结果的最高位有无进位或借位。如果运算结果的最高位产生了进位(加法)或借位(减法)则 CF=1,否则 CF=0。 PF( Parity Flag)奇偶标志,反映运算结果中“ 1”的个数的奇偶性,主要用于判断数据传送过程中是否出错。若结果的低 8 位中有偶数个“ 1”则 PF=1,否则 PF=0。 AF( Auxiliary Carry Flag)辅助进位标志,又称半进位标志。加减运算时,若 D3向 D4产生了进位
15、或借位则 AF=1,否则 AF=0。在 BCD 码运算时,该标志用于十进制调整。 ZF( Zero Flag)零标志,反映运算结果是否为 0。 若结果为零则 ZF=1,否则 ZF=0。 SF( Sign Flag)符号标志,反映运算结果最高位即符号位的状态。如果运算结果的最高位为则 SF=1(对带符号数即为负数),否则 SF=0(对带符号数即为正数)。 OF( Overflow Flag)溢出标志,反映运算结果是否超出了带符号数的表数范围。若超出了机器的表数的范 围,即为产生溢出,则 OF=1,否则 OF=0。 DF( Direction Flag)方向标志,用于串处理指令中控制串处理的方向。
16、当 DF=1 时,每次操作后变址寄存器 SI、 DI 自动减量,因此处理方向是由高地址向低地址方向进行。当 DF=0,则 SI、 DI 自动增量,处理方向由低地址向高地址方向进行。该标志由方向控制指令 STD 或CLD 设置或清除。 IF( Interrupt Flag)中断允许标志,用于控制 CPU 是否允许响应可屏蔽中断请求。 IF=1为允许响应可屏蔽中断请求, IF=0 则禁止响应可屏蔽中断请求。该标志可由中断控 制指令 STI或 CLI 设置或清除。 TF( Trap Flag)陷阱标志,用于单步操作。 TF=1 时,每执行一条用户程序指令后自动产生陷阱,进入系统的单步中断处理程序。
17、TF=0 时,用户程序会连续不断地执行,不会产生单步中断。 5. 求出下列运算后各个标志的状态,并说明进位标志和溢出标志的区别。 (1) 1278H + 3469H (2) 54E3H - 27A0H (3) 3881H + 3597H (4) 01E3H - 01E3H 5 【解】 CF 进位标志,反映在运算结 果的最高位有无进位或借位。 OF 溢出标志,反映运算结果是否超出了带符号数的表数范围。机器实际处理时判断是否溢出的方法是根据最高位的进位( CF)与次高位的进位是否相同来确定,若两者不相同则 OF=1(表示有溢出),否则 OF=0(表示无溢出)。 (1) 0001 0010 0111
18、 1000 0011 0100 0110 1001 0100 0110 1110 0001 运算后各个标志的状态: OF DF IF TF SF ZF - AF - PF - CF 0 0 0 1 1 0 (2) 0101 0100 1110 0011 0010 0111 1010 0000 0010 1100 0100 0011 运算后各个标志的状态: OF DF IF TF SF ZF - AF - PF - CF 0 0 0 0 0 0 (3) 0011 1000 1000 0001 0011 0101 1001 0111 0110 1110 0001 1000 运算后各个标志的状态:
19、OF DF IF TF SF ZF - AF - PF - CF 0 0 0 0 1 0 (4) 0000 0001 1110 0011 0000 0001 1110 0011 0000 0000 0000 0000 运算后各个标志的状态: OF DF IF TF SF ZF - AF - PF - CF 0 0 1 0 1 0 6. 8086 CPU 中存储器的逻辑地址和物理地址之间有什么关系,各有多少值 ? 【解】物理地址为某一个存储单元的实际地址,对于 8086 它是一个 20 位的地址。物理地址从 00000H FFFFFH 变化,对应 1MB 的空间。 逻辑地址,又称偏移地址或有效地
20、址,即对段首的偏移量。偏移地址从 0000H FFFFH变化,对应 64KB 的空间。 物理地址的获得方法是:将段寄存器的内容左移 4 位(即 16),与逻辑地址相加,得到6 20 位物理地址。根据寻址方式的不同,偏移地址可以来自程序计数器( IP)或其它寄存器。 7. 8086CPU 使用的存储器为什么要分段,怎样分段?为什么要设置段寄存器,有几个段寄存器 ?各段寄存器有什么意义? 【解】 8086 CPU 内部数据结构是 16 位的,即所有的寄存器都是 16 位的 ,而外部寻址空间为1MB,即需要 20 位地址线。为了能用内部寄存器中的 16 位地址来寻址 1MB 空间, 8086将 1M
21、B空间以 16 字节为一个内存节,共分成 64K 个节。节的起始地址分别为 00000H、 00010H、00020H、 FFFF0H,称为段基址。节的起始地址的后 4 位二进制数为全 0,称为节的段地址。 用于存放段地址的寄存器称为段寄存器,根据其主要用途,分为代码段寄存器 CS、数据段寄存器 DS、堆栈段寄存器 SS、附加段寄存器 ES。 代码段寄存器 CS:用来存放代码段存储区域的起始地址。 数据段寄存器 DS:数存放程 序的数据存储区的起始地址。 堆栈段寄存器 SS:用来存放堆栈存储区的起始地址。由堆栈段寄存器 SS 与堆栈指针寄存器 SP 来确定当前堆栈指令的操作地址。 附加段寄存器
22、 ES:附加段是为某些字符串操作指令存放目的操作数而设置的一个附加的数据段,附加段寄存器用来存放该附加数据段存储区域的起始地址。 12. 8086 的 I/O 端口寻址范围是多少?什么是 I/O 端口与内存分别独立编址? 【解】 8086 的 I/O 端口使用 16 位地址 A15 A0, I/O 端口地址范围为 0000H FFFFH,可寻址空间为 64KB。 I/O 端口与内存分别 独立编址时,指令访问的是 I/O 端口还是内存,由地址信息无法区分,由 M/IO 信号区分是 I/O 端口的寻址与内存寻址 。 14. 什么是基地址和位移量,它们之间有何联系? 【解】 8086 CPU 内部数
23、据结构是 16 位的,而外部寻址空间为 1MB。为了能用内部寄存器中的16 位地址来寻址 1MB 空间, 8086 将 1MB 空间以 16 字节为一个内存节( Paragraph),共分成64K 个节。节的起始地址称为段基址。偏移地址是存储地址对段首的偏移量。偏移地址从0000H FFFFH 变化,对 应 64KB 的空间。 它们之间有何联系:物理地址基地址 16位移量。 15. 设 CS=1200H, IP=0FF00H,此时指令的物理地址是多少?指向这一物理地址的 CS和 IP的值是惟一的吗? 【解】指令的物理地址: 12000H 0FF00H 21F00H 指向这一物理地址的 CS 和
24、 IP 的值不是惟一的。 16. 若 CS=1000H,指出当前代码段可寻址的存储空间的大小和地址范围。 【解】当前代码段可寻址的存储空间的大小: 64KB 当前代码段可寻址的存储空间的地址范围: 10000H 1FFFFH 1. 若 DS=3000H, BP=2000H, SI=1000H, 32000H=00H, 32001H=40H, SS=3000H,31000H=20H, 31001H=60H, 33000H=50H, 33001H=60H,说明下列各条指令执行后,AX 中的内容是什么?并说明各条指令中源操作数的寻址方式。 (1) MOV AX, DS (2) MOV AX, 200
25、0H (3) MOV AX, SI (4) MOV AX, BP 7 (5) MOV AX, BP+SI 【解】 (1) AX 3000H 寄存器寻址 (2) AX 4000H 直接寻址 (3) AX 6020H 寄存器间接寻址 (4) AX 4000H 寄存器间接寻址 (5) AX 6020H 基址加变址寻址 2. 指出下列指令中的非法指令。 (1) MOV BX, AL (2) MOV CS, 2000H (3) PUSH 4567H (4) XCHG VAR1, VAR2 (5) ADD AL, 148H (6) MOV DS, 2000H (7) MOV BH, SI (8) SUB
26、38H, AL 【解】非法指令: (1) MOV BX, AL BX 和 AL 的长度不一致 (2) MOV CS, 2000H CS 段寄存器不能作目的操作数 (3) PUSH 4567H 只能将寄存器或存储单元的内容压入堆栈,不能是立即数 (4) XCHG VAR1, VAR2 两个存储单元之间不能直接交换数据 (5) ADD AL, 148H 运算溢出 (6) MOV DS, 2000H 立即数不能直接传送给 DS 段寄存器 (7) MOV BH, SI BH 和 SI 的长度不一致 (8) SUB 38H, AL 目的操作数不能是立即数 3. 若 SP=2000H, AX=3355H,
27、 BX=4466H,试指出下列指令或程序段执行后有关寄存器的内容。 (1) PUSH AX 执行后 AX=?, SP=? (2) PUSH AX PUSH BX POP DX POP CX 执行后 AX=?, CX=?, DX=?, SP=? 【解】 (1) 执行后 AX=3355H, SP=1FFEH (2) 执行后 AX=3355H, CX=3355H, DX=4466H, SP=2000H 4. 请按下面的要求 写出相应的汇编指令或指令序列。 (1) 将 1234H 送入 DS 中。 (2) 将 5678H 与 AX 中的数相加,结果放在 AX 中。 (3) 将 DATAX 和 DATA
28、Y 相加,其和放在 DATAY 中。 (4) 将 AX 中的高 4 位变为全 0。 (5) 将 BX 中的低 2 位变为全 1。 (6) 将 CX 中的 D3 D7 位取反。 【解】 8 (1) MOV AX, 1234H MOV DS, AX (2) ADD AX, 5678H (3) MOV AX, DATAX ADD AX, DATAY MOV DATAY, AX (4) AND AX, 0FFFH (5) OR AX, 0003H (6) MOV AX, CX AND AX, 07H XOR CX, 0FFFFH AND CX, 0FFF8H ADD CX, AX 5. 若 AL=0F
29、FH, BL=03H,指出下列指令执行后标志 AF、 OF、 ZF、 SF、 PF、 CF 的状态。 (1) ADD BL, AL (2) INC BL (3) SUB BL, AL (4) NEG BL (5) AND BL, AL (6) MUL BL (7) CMP BL, AL (8) IMUL BL (9) OR BL, AL (10)XOR BL, BL 【解】执行后: AF OF ZF SF PF CF (1) ADD BL, AL 1 0 0 0 0 1 (2) INC BL 0 0 0 0 0 不影响 (3) SUB BL, AL 1 0 0 0 0 1 (4) NEG BL
30、 1 0 0 1 0 1 (5) AND BL, AL 任意值 0 0 0 1 0 (6) MUL BL 任意值 1 任意值 任意值 任意值 1 (7) CMP BL, AL 1 0 0 0 0 1 (8) IMUL BL 任意值 1 任意值 任意值 任意值 1 (9) OR BL, AL 任意值 0 0 1 1 0 (10) XOR BL, BL 任意值 0 0 1 1 0 9. 执行下列程序段,指出各相关寄存器的内容。 MOV AX, 0A0BH DEC AX SUB AX, 0FFH AND AX, 00FFH MOV CL, 3 SAL AL, CL 9 ADD AL, 25H XCH
31、G AL, AH PUSH AX POP BX INC BL 【解】各相关寄存器的内容: MOV AX, 0A0BH ; AX: 0A0BH DEC AX ; AX: 0A0AH SUB AX, 0FFH ; AX: 090BH AND AX, 00FFH ; AX: 000BH MOV CL, 3 ; CL: 03H SAL AL, CL ; AX: 0058H ADD AL, 25H ; AX: 007DH XCHG AL, AH ; AX: 7D00H PUSH AX ; AX: 7D00H POP BX ; BX: 7D00H INC BL ; BX: 7D01H 10. 用串操作指令
32、将 100H 个字符从 2100H 处搬到 1000H 处,并且从中检索与 AL 中所存字符相同的存储单元,并将该单元的内容替换成空格,本程序只替换检索到的第一个相同的单元。请在下列空格中填入合适的指令,使程序段完成上述功能。 MOV SI, 2100H (1) MOV CX, 100H CLD (2) MOV DI, 1000H MOV CX, 100H (3) JNZ K1 (4) MOV DI, 20H K1: 【解】 (1) MOV DI, 1000H (2) REP MOVSB (3) REPNE SCASB (4) DEC DI 12. 编程求出 AX 中存放的 16 位二进制数中
33、 1的个数,将其存入 CL 中(若10 AX=1001010011001011B 则将 8 存入 CL)。 【解】程序段如下: MOV CX, 16 XOR BX, BX L1: SHL AX, 1 ;最低位移入 CF RCL BL, 1 ; CF 移入最低位 ADD BH, BL XOR BL, BL LOOP L1 MOV CL, BH 1. 下列语句在存储器中分别为变量分配多少字节? VR1 DW 9 VR2 DW 4 DUP(? ) CONT EQU 10 VR3 DD CONT DUP(? ) VR4 DB 2 DUP(?, CONT DUP(0) VR5 DB HOW ARE YO
34、U? 【解】 VR1: 2B ; VR2: 8B ; CONT: 1B ; VR3: 40B; VR4: 44B; VR5: 12B 7. 对下面程序进行注释,并说明其功能。 DATA SEGMENT A DB 123ABC DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA BX, A MOV CX, 6 MOV AH, 2 LP: MOV AL, BX XCHG AL, DL INC BX INT 21H LOOP LP MOV AH, 4CH INT 21H CODE ENDS END START 【解】注释如下: