操作系统笔记9
...
汇编语言笔记13-数据移动指令的合法性
汇编语言笔记13-数据移动指令的合法性 8086寄存器中允许的数据流向如图,注意CS只能作为源操作数 考察以下的指令: 12345678910111213141516171819202122232425mov ax,8h ;mov 寄存器,立即数,合法的mov ax,bx ;mov 通用寄存器,通用寄存器,合法的mov ax,ds ;mov 通用寄存器,段寄存器,合法的mov ds,ax ;mov 段寄存器,通用寄存器,合法的mov ax,[0] ;mov 通用寄存器,内存单元,合法的;以下三条指令中,内存单元作为目的操作数,masm会忽略中括号【】,因此要显式地指明段地址mov [0],bx ;mov 内存单元,寄存器,合法的mov [0],cs ;mov 内存单元,段寄存器,合法的mov [0], 5678h ;mov 内存单元,立即数,合法的;------------------------// mov 内存单元,内存单元 是不合法的。mov ds,[0] ;mov 段寄存器,内存单元,合法的mov ds,ax ;mov...
操作系统笔记8
操作系统笔记8 内存管理 基地址寄存器&界限地址寄存器 Base:基地址寄存器含有最小的合法物理内存地址 Limit:界限地址寄存器决定了范围的大小 越界时,会产生越界中断 逻辑地址空间和物理地址空间 逻辑地址,又称相对地址:CPU所生成的地址 物理地址,又称绝对地址:内存单元所看到的地址,即加载到内存地址寄存器中的地址 相对地址到绝对地址之间的转换,称为重定位 时机: 静态重定位:在入主存之前完成重定位,于 编译->链接->装入...
操作系统笔记7
...
汇编语言笔记6
汇编语言笔记6 课本第9、第10章 转移指令的原理 可以修改IP,或同时修改CS和IP的指令统称转移指令。有以下几类: 只修改IP时,称段内转移,如 jmp ax 同时修改CS和IP,称段间转移。如 jmp 1000:0 段内转移又分为:短转移(-128——127)【CPU在执行短转移的时候只需知道位移,不需知道地址】、近转移(-32768——32767) 8086CPU的转移指令分为: 无条件转移指令(jmp) 条件转移指令 循环指令 过程 中断 操作符offset 操作符offset用于获取标号处的偏移地址 12codesg segments:mov ax,offset s ;相当于 mov ax,0 jmp指令 jmp指令为无条件转移指令,可以只修改IP,也可以同时修改CS和IP 1234567jmp short ptr 标号 ;段内短转移jmp near ptr 标号 ;段内近转移jmp far ptr 标号 ;段间转移(远转移),用标号处的段地址和偏移地址修改CS和IPjmp 16位置寄存器 ;利用寄存器中的值修改IPjmp 段地址:偏移地址...
汇编语言笔记5
汇编语言笔记5 第7、8章 loop指令 loop指令和循环有关,循环的次数和CX的值有关 loop指令执行过程: CX=CX-1 判断CX中的值,不为0则转移到标号处执行程序 CX中的值影响loop指令的循环结果。通常我们用loop指令来进行循环,CX中存放循环的次数 段前缀 我们可以在访问内存单元时显式地给出段寄存器,这就是段前缀 例子: 1mov ax,ds:[bx] and和or指令 and指令:逻辑与,按位进行与计算 or指令:逻辑或,按位进行或计算 大小写转换问题: 大小写的ASCII码相差32,即二进制的第五位为1还是0的问题(右边开始为第0位) 大小写转换就是and 11011111B,即可将小写转换为大写,or 00100000B,即可将大写转小写 或者直接对ASCII码进行加减20H处理 bx,si,di和bp 在8086CPU中,只有...
汇编语言笔记12
汇编语言笔记12 编程处理0号中断 中断处理程序应该放在内存中,在中断向量表中,许多单元是空的。从0000:0200到0000:02FF这256个字节对应的中断向量表都是空的,那么我们可以把中断处理程序放在这一段内存中。 编程处理0号中断的过程如下: 编写中断处理程序do0 将do0送入0000:0200处,使其常驻内存 将do0的入口地址存到中断向量表的0号表项中 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849assume cs:codecode segmentstart:mov ax,cs mov ds,ax mov si,offset do0 ;设置DS:si指向源地址 mov ax,0 mov es,ax mov di,200H ;设置es:di指向目的地址 mov cx,offset do0end-do0 ;通过do0end-do0来计算出do0部分代码所占字节 cld ;设置传输方向为正向 ...
汇编语言笔记11
汇编语言笔记11 内中断 中断的类型 CPU可以在执行完当前指令后,检测到从外部发送过来或从内部产生的一种特殊信息,并立刻对接收到的信息进行处理。这种特殊的信息称 中断信息。 中断的意思是:CPU不接着(刚执行完的指令)向下执行,转而去处理这个特殊的信息 中断的类型: 内中断:CPU内部事件引起的中断 外中断:外部设备事件引起的中断 8086CPU内部产生的中断信息 除法错误,中断类型码为0 单步执行,中断类型码为1 执行into指令,中断类型码为4 执行int n指令,n为中断类型码 中断处理程序和中断向量表 根据CPU的设计,中断类型码的作用就是定位中断处理程序。CPU通过中断类型码从中断向量表中找到对应的中断处理程序的入口地址 中断向量表: 中断向量表在内存中保存,存放着256个中断源对应的中断处理程序入口。 每个中断由IP(占两个字节)和CS(占两个字节)组成。CS存在高地址,IP存在低地址,即一个表项占两个字 每个中断对应的中断类型码N,IP=N X 4,CS=N X...
操作系统笔记6
操作系统笔记6 进程同步 背景 共享数据的并发访问可能会导致数据的不一致。进程同步即通过各种机制来解决这个问题。 临界区问题 一、临界资源: 一次只能被一个进程使用的资源,如:共享变量、共享数据结构、慢速设备(打印机等) 二、临界区: 进程中有一个代码段称为临界区,在该区中,进程可能改变公共变量等,当一个进程进入临界区,就没有其他进程允许在临界区中执行,即没有两个进程可以同时在临界区中执行。 每个进程必须请求允许进入临界区,实现这一请求的代码段称进入区,临界区之后有退出区,其他代码称为剩余区 do{ //进入区 //临界区 //退出区 //剩余区 }while(true) 12345678910111213141516- **临界区的解答必须满足三点要求**:1.互斥 2.有限等待 3.前进- **临界区的使用原则:**1.空闲让进 2.忙则等待 3.有限等待(不能出现死循环) 3.让权等待(放弃CPU)##...






