汇编学习笔记


2
cpu对设备的读写


段寄存器


程序如何运行的?
1程序先被载入内存,
2cpu找到程序在内存中的位置 (根据地址总线)
3经过某种途径把程序的内容输送给cpu执行 (根据数据总线)
4 数据放到寄存器,cpu才能执行



3:
cs,ip段寄存器

程序被载入内存后,cpu从哪里开始执行程序代码?

cs专门存放程序代码段的基地址 code segment
IP 记清楚别名为指令指针寄存器  存放偏移地址

cpu要执行的指令=cs*16+IP



debug
R 查看和修改寄存器内容
D 查看内存中的内容
U 将机器码转换为汇编指令
T 跟踪代码执行
A 以汇编形式在内存写入指令

DS 寄存器(内存访问)
cpu根据什么知道哪些数据是咱们自定义的全局变量呢?

cpu是根据DS(data segment)这个寄存器和任意一个通用寄存器的值或者其余数值组成数据段的物理地址

如:
    DS[0] DS:[BX]

4

堆栈
栈段概念
ss 寄存器 和sp寄存器

入栈push 和出栈pop


同代码段和数据段同样,cpu如何知道一段内存被当成栈使用

一致性入栈和出栈的时候如何知道那个单元是栈顶,
答:cpu根据ss和sp寄存器来感知 栈段的存在,任意时刻ss:sp指向栈顶



7 关于中断的疑问?

中断发生时 cpu如何找到中断处理程序,中断处理程序有不少种,每一个中断程序存放在哪里?

答:cpu根据中断号,查找中断向量表。查找到中断程序的地址

8:修改中断向量表

系统默认在内存0000:0000到0000:03fe专门存放中断向量表,而且每一个表占用两个字节

那么咱们就知道了0号中断表项的内存地址是0000:0000是开始的4字节中,汇编代码就是要
对这4字节赋予咱们本身编写的中断处理程序的入口地址

汇编伪代码:

mov ds:[0],咱们本身的中断程序偏移地址
Mov ds:[2] 咱们中断处理程序段地址


中断执行程序:

中断随时能够产生,那么中断产生时必须立刻执行 中断处理程序,

那么中断处理程序必须放在内存 何处?


中断处理程序存放的位置必须在任什么时候候都不能 被其余程序覆盖

所以咱们必须在内存中找出一段空间上任何程序不使用的

在正常状况下,内存地址0000:02000到0000:0300是没有被使用的




ide

相关文章
相关标签/搜索