-
首先简单介绍一下:对 push 和 pop 指令的理解:对于格式,请记住 reg(包括段寄存器和通用寄存器)后面可以跟着 mem(存储单元)重要的是用法:
为了方便起见,这两条指令后面的内容叫rm) --rm标识不同:对于推送是进入堆栈,表示将rm的内容发送到堆栈中,对于pop是出堆栈,表示将堆栈的内容取出到rm--sp修改的时间和方法不同: 对于推送,是先换SP,再进栈,形式是sp-2,对于POP是先出栈,再换SP,形式是sp+2
重新分析如下:(ss=1381h是我自己的设置,也可以灵活设置。 )
ax: sp-2=1ffeh,然后将 ax 的值添加到堆栈中。 也就是说,将 ax 的值输入到 ss:1ffeh。
bx:sp-2=1ffch,然后将bx的值加到栈中,即将bx的值加到ss:1ffch中。
ax:首先将 ss:1ffch 处的值(即上一步中 bx 的值,因为上一步将 bx 分配给 ss:1ffch)弹出到 ax,在本例中为 ax=5000h则 sp + 2 = 1ffch + 2 = 1ffeh
完成以上三个步骤后,bx 的值不受影响,因此 bx 仍为 5000h
事实上,SS:SP可以理解为CS:IP。 这一切都与改变偏移量有关。
-
你没有书,是吗? 没有纸,电子版要看!!
这。。。。。。AX 和 BX 是 16 位的,因此每次执行 push 和 pop 时,它们都会减少和增加 2
push ax;此时SP-2 1FFEH指向3000H,AX数据保持不变。
push bx;SP-2 1FFCH此时指向5000H,BX的数据没有变化。
pop ax;sp+2=1ffeh,此时 SP 指向的数据 (5000h) 存储在 ax 中,所以 ax 为 5000h。
最终结果为:第一和第二SP 1FFEH,AX 5000H,BX 5000H
-
不推荐这种问题!
如果你是学生,你会通过看这本书得到答案。 你还用互联网问人吗?
如果是自学成才的,只需在调试中尝试即可。
debug r sp
r axr bx
apush ax
push bx
pop axttt
-
执行 push ax 命令后,sp=1ffeh,然后推 bx 和 pop ax,ax=5000hsp=1ffeh
bx=5000h
-
我们可以使用中断类型代码在中断向量表中找到中断处理程序的条目。 查找此条目地址的最终目标是使用它来设置 CS 和 IP,以便 CPU 可以执行中断处理程序。 使用中断类型代码查找中断向量,并使用它来设置 CS 和 IP,这由 CPU 硬件自动完成。
CPU 硬件执行此操作的过程称为屏蔽信号中断过程。
以下是8086 CPU收到中断消息后导致的中断过程。
2)将标志寄存器的值放入堆栈中(因为在中断过程中需要更改标志寄存器的值,所以先存储在堆栈中)。
3)将标志寄存器的第 8 位 TF 和第 9 位 IF 的值设置为 0;
4)将CS的内容放入堆栈中;
5)IP内容进入堆栈;
6)从存储器地址是中断类型宏轮代码4和中断类型代码。
中断处理程序的入口地址以 4+2 双字单元读取,并设置 IP 和 CS。
可以简明扼要地描述如下:
1) 获取中断类型代码 n
2)pushf
3)tf=0,if=0
4)push cs
5)push ip
-
55h 是十六进制数 55,它是二进制数 01010101,每个位对应一个 LED,0 表示不亮,1 表示亮,所以 55h 表示 8,以此类推,从最高位到最低位是不亮和不亮的间隔。 55h 分配给 Al 寄存器,80h Al亮起。 每循环一次,Al和0fph就是XOR(out 80h,al),变成0AAH,即原来的0变成1,原来的1变成0,然后它发光,改变所有灯的开启和关闭状态。
等等......
实际上AL的变化是:55h --0aah --55h --0aah 。
55h 是初始状态。 您还可以将初始状态设置为 0aah:mov al, 0aah
-
物理地址 = 段地址 * 10 + 偏移地址
-
8086 的时钟为 5MHz t=1 5MHz=200ns(即总线周期为 200ns)。
8086 需要 4 个总线周期 T1、T2、T3 和 T4 才能进行单个内存存储器或检索。
T1 定期地址行。
T2、T3、T4 用于访问或检索数据。
根据你的回答,内存访问时间至少应该是原来的,即3*200ns=600ns
-
每条地址线可以发送两个Li模块信号0或1。
如果地址线只有 1 位,则输出信号为 0 或 1。 如果为 0,则可以定位 1 个单元,如果为 1,则可以定位另一个单元,因此地址线宽为 1 位,可以定位 2 1 = 2 个存储单元。
如果地址线有2位,那么输出信号可以有4种组合,即可以定位00、01、10、11和4个存储单元,即2个2存储单元,那么存储器地址空间大小为4。
假设地址线有3位,那么输出信号可以有8种组合,即000、001、010、011、100、101、110、111,可以定位8个存储单元,即2 3个存储单元,则存储器地址空间大小为8。
同样,8086 CPU 的总路由宽度为 20 位,即可以定位 2 20 个内存单元,内存地址空间大小为 1048576(= 2 的 20 次方)。
自 2 10 年以来
1k2^10k1m
单位转换问题)。
因此,8086 CPU 的总地址宽度为 20 位,即可以定位 2 20 个内存单元,内存地址空间大小为 1048576(= 2 的 20 次方)。
8086 和 80386 其实并没有太大的区别,80386 只是 8086 的后续版本,增加了很多指令,增加了寄存器等等,操作数的长度也变长了,它们的关系就像软件一样,前期开发的软件功能无法满足需求,然后公司会开发出更强大的后续版本, 它与以前的版本兼容,并且还添加了许多新内容,一个典型的例子是Photoshop(早期不叫CS)!很容易弄清楚它们的差异和联系。