四、
- 通常CALL指令执行后,需要把CALL指令的下面一个指令的地址保护到栈中,以便将来返回使用。
- 堆栈一般由 SP 寄存器来指向栈顶,入栈时先 SP-2,然后入栈内容存入 SP 所指向 的存储器(栈顶),出栈时先把 SP 指向的存储器(栈顶)内容读入到目的寄存器, 然后 SP+2,修改栈顶指针。
- CALL 执行时先把下一条指令的地址入栈,然后把对应的子程序地址放入的 PC。CALL S 指令的下一条指令的地址是 1006H,S 子程序的地址是 2000H,SP=3000H,因此 CALL S 指令执行后,PC=2000H,SP=2FFEH,2FFEH 为 06H,2FFFH 为 10H。
- RET 指令执行时完成出栈动作,栈顶内容自动赋值到 PC,如果堆栈是平衡的,实 现子程序的返回。由于在 RET 之前执行了一个 POP AX 指令,SP 进行了+2 操作, 在执行 RET 指令时,SP=3000H,此时再进行出栈,PC=2512H,SP=3002H。
- 堆栈既用于存放返回地址,又可以暂存用户的数据,因此编制子程序时一定要保持 堆栈的平衡,否则将不能正确实现子程序的返回,程序执行会失控。
CALL 指令调用一个过程,指挥处理器从新的内存地址开始执行。过程使用 RET(从过程返回)指令将处理器转回到该过程被调用的程序点上。
*
从物理上来说,CALL 指令将其返回地址压入堆栈,再把被调用过程的地址复制到指令指针寄存器。当过程准备返回时,它的 RET 指令从堆栈把返回地址弹回到指令指针寄存器。32 位模式下,CPU 执行的指令由 EIP(指令指针寄存器)在内存中指岀。16 位模式下,由 IP 指出指令。
简单的说,就是当出现call语句时,CPU会将本应执行的下一条指令压入栈中存着,然后根据call语句跳转去执行call语句指定的那个语句,等那个语句执行完了以后,原来应该执行的那条指令就会被从栈中弹出并执行。
注意:进出栈都是以字(两个字节)为单位
五、
- 在下面关于微处理器的叙述中,错误的是( ) 。 C
A.微处理器是用超大规模集成电路制成的具有运算和控制功能的芯片
B.一台计算机的CPU含有1个或多个微处理器
C.寄存器由具有特殊用途的部分内存单元组成,是内存的一部分
D.不同型号的CPU可能具有不同的机器指令
C—— 寄存器是微处理器的一部分,而内存是计算机的主存储器,内存与微处理器是并列的
- 运算器在执行两个用补码表示的整数加法时,判断其是否溢出的规则为( )。D
A.两个整数相加,若最高位(符号位)有进位,则一定发生溢出
B.两个整数相加,若结果的符号位为0,则一定发生溢出
C.两个整数相加,若结果的符号位为1,则一定发生溢出
D.两个同号的整数相加,若结果的符号位与加数的符号位相反,则一定发生溢出
正数相加若最高位有进位则为溢出,负数相加最高位没有进位则为溢出
- 运算器由很多部件组成,其核心部分是( )。 B
A.数据总线 B.算术逻辑单元 C.累加器 D.多路开关 - 在一般的微处理器中,( )包含在CPU中。D
A.内存 B.输入/输出单元 C.磁盘驱动器 D.算术逻辑单元 - 程序设计中所使用的地址是( )。A
A.逻辑地址 B.有效地址 C.物理地址 D.段基址
逻辑地址包括有效地址(偏移地址)以及段基址,两个通过“段加偏移”寻址机制形成物理地址
- 8086CPU通过( )控制线来区分是存储器访问,还是输入输出访问。A
A. M/ #IO B. DT/#R C. ALE D. MN/#MX - 8086微处理器中,当引脚#RD 和 M/#IO信号同时为低电平时,意味着CPU当前正在进行( )。C
A.存贮器读 B.存储器写 C.外设读 D.外设写
#RD低电平有效 ; M/#IO 低电平#IO
- 在8086/8088 CPU中,一个最基本的总线读写周期由( )时钟周期组成。 C
A. 1个 B. 2个 C. 4个 D. 6个 - 设8086微处理器CLK端接入的频率为4MHz,则存储器(或I/O)读写基本总线周期为( )。A
A.1μS B.4μS C.0.4μS D.0.25μS
CLK-时钟 8086一个总线周期有四个时钟周期
- 8086/8088微处理器用于传输数据是在总线周期的( )。D
A.T1状态 B.T2状态 C.T3状态 D.T4状态在T1状态:发送地址。
在T2状态:撤销地址,为传输数据做准备。
在T3状态:提供状态信息,传送数据到数据总线上。
在T4状态:数据传输,完成数据传输,结束总线周期。 - 在总线周期的在T1状态,CPU往总线上发 ( )信息。 B
A. 数据 B . 地址 C. 状态 D. 其它 - 8086有两种工作模式, 最小模式的特点是( )。A
A. CPU提供全部控制信号 B. 由编程进行模式设定
C. 不需要8286收发器 D. 需要总线控制器8288 - 8086有两种工作模式,最大模式的特点是 ( )。C
A. M/#IO引脚可直接引用 B. 由编程进行模式设定
C. 需要总线控制器8288 D. 适用于单一处理机系统 - 真值超出机器数表示范围称为溢出,此时标志寄存器中的( )位被置位。 A
A. OF B. AF C. PF D. CF
控制标志位
CF–进位标志 PF–奇偶性标志 AF–辅助进位标志 ZF–零标志 SF–符号标志 OF–溢出标志
状态标志位
DF–方向标志 IF–中断允许标志 TF–跟踪标志
- 8086 系统中内存储器地址空间为1M,而在进行I/O读写是,有效的地址线是 ( ) B
A . 高16位 B. 低16位 C. 高8位 D. 低8位 - 8086 CPU中段寄存器用来存放( ) C
A.存储器的物理地址 B. 存储器的逻辑地址
C. 存储器的段基值 D. 存储器的起始地址 - 8086CPU在进行无符号数比较时,应根据( ) 标志位来判别。C
A. CF和OF B. CF和PF C. CF和ZF D. ZF和OF
对于无符号数的操作,将不考虑溢出标志
- 当存储器读写速度较慢时,需产生一个READY信号以实现与CPU的同步,CPU将在总线周期的( )时候采样该信号。C
A. T2开始时 B. T2结束时 C、T3开始时 C. T3结束时
T3开始前
- 8086微处理器中,有关READY引脚功能描述不正确的是( )。D
A.实现CPU和存储器或I/O设备之间的速度匹配
B.CPU在每个总线周期的T3去检测READY是否有效
C.如果检测到READY线为低电平,则自动插入一个(或多个)等待状态TW
D.如果检测到READY线为高电平,则自动插入一个(或多个)等待状态TW - 8086/8088微处理器复位后下列内部寄存器的值正确的是( )。C
A.IP=0000H,CS=0000H,SS=0000H,DS=0000H
B.IP=0000H,CS=0000H,SS=0000H,DS=FFFFH
C.IP=0000H,CS=FFFFH,SS=0000H,DS=0000H
D.IP=FFFFH,CS=0000H,SS=0000H,DS=0000H
记住CS是FFFFH,其余都是0000H
- 8086/8088微处理器复位后,有关内部寄存器的值描述不正确的是( ) C
A.标志寄存器各位全部置0 B.指令预取队列缓冲器被清楚
C.四个段寄存器置0 D.IP被置0
CS
- 80486CPU进行算术和逻辑运算时,可处理的信息的长度为( )。 D
A.32位 B.16位 C.8位 D.都可以
80486 32位
- Intel80286有24位地址线,则其寻址的最大物理空间是( )字节。 B
A.1MB B.16MB C.1GB D.4GB
224B
- 若某数据段位于存储区38000H~47FFFH,则该数据段的段基址为( )。 A(X)D
A.38000H B.47FFFH C.3000H D.3800H
段寄存器只有十六位,只能存放20位段起始地址,称它为段基值,左移四位得到一个20位段段起始地址,成为段基址
-
若某台微型计算机的型号是奔四800,则其中800的含义是( )。D
A.CPU中有800个寄存器 B.CPU中有800个运算器
C.该微机的内存为800MB D.时钟频率为800MHZ -
8086标志寄存器FLAGS中存放两类标志,即( )。B
A.符号标志.溢出标志 B.控制标志.状态标志
C.方向标志.进位标志 D.零标志.奇偶标志 -
若AL=3BH,AH=7DH,则AL和AH中的内容相加后,标志CF、SF和OF的状态分别是( )。A
A.0、1、1 B.1、1、1 C.0、0、0 D.1、1、0
AL=0011 1011 AH=0111 1101 相加
0011 1011
0111 1101
——————
1011 1000 -
设某一个单元的物理地址是54321H,则正确的逻辑地址表示为( )。C
A.4321H:50000H B.54320H:1H C.5430H:0021H D.5432H:00001H -
某系统中,已知建立堆栈时SS=2360H,SP=0800H,经过一段时间后,SP的内容变为0700H,则堆栈中有多少个字的数据( )。A
A.80H B.50H C.100 D.100H
一个字两个字节 100H/2=80H
- 如果访问存储器时使用BP寻址,则默认的段寄存器是( )D
A.CS B.ES C.DS D.SS - 下列有关指令指针寄存器的说法中,正确的是( )。B
A.IP存放当前正在执行的指令在代码段中的偏移地址
B.IP存放下一条将要执行的指令在代码段中的偏移地址
C.IP存放当前正在执行的指令在存储器中的物理地址
D.IP存放当前正在执行的指令在存储器中的段地址