码迷,mamicode.com
首页 > 其他好文 > 详细

汇编学习笔记

时间:2017-10-16 12:16:59      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:汇编


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是没有被使用的




汇编学习笔记

标签:汇编

原文地址:http://12512242.blog.51cto.com/12502242/1972624

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!