【汇编语言王爽】学习笔记p54-p79(下)

简介: 【汇编语言王爽】学习笔记p54-p79

int n引发中断

1668161405007.jpg

1668161414195.jpg

疑问 什么时候if tf恢复?

@


int指令调动子程序,此子程序就是中断处理程序简称 中断例程 ------可以自定义中断例程来实现特定功能

具体7ch 存在0000:7ch*4这个地方

1668161497140.jpg


中断例程 参数:放在ax里面可以

1668161506978.jpg1668161514533.jpg1668161525474.jpg


出入栈 操作一一对应,执行irep返回的时候意义出栈

1668161537434.jpg


中断例程2

1668161547130.jpg1668161554079.jpg


bios 和 dos中断处理

bios–在系统版的rom存放–容量8KB,地址从FE000H开始

1668161571483.jpg


BIOS要做硬件系统的检测和初始化工作,外部中断和内部终端的中断例程也在里面 对于硬件设备进行io的中断例程,还有和其他硬件操作的中断例程 里面都有---------ddr3八脚直接式BIOS芯片

bios 如此好 解放了大量程序员工作 不去理解底层

1668161587675.jpg


BIOS-比如显示内容 必须要算 推算了解显示的内存区域在哪里



bios的10h中断,(ah)=2调用第十号h终端的2耗子程序没设置光标位置

(ah)=9 调用10h中断的9号子程序 在光标位置显示字符

bios调用两个中断完成 显示高亮闪烁a



直接BIOS终端手册-----例子


1668161605540.jpg

1668161619983.jpg

汇编还有DOS中断–强大

1668161733603.jpg1668161741707.jpg


小结-bios,dos中断

1668161752349.jpg

1668161760333.jpg


程序返回 int 21H DOS中断例程----其实就是mov ax,4c00h int 21h

显示高亮a 方便的 dos中断例程!!牛逼

1668161770700.jpg


Bios和dos中断例程的安装过程

1668161782324.jpg


端口的读写–声音为例: out in 等指令

1668161790951.jpg


in al 61h 这条指令为例实际上就是控制 设备控制器(61h)

1668161798596.jpg

1668161807098.jpg



注意 端口-------就是外部设备

cpu可以访问三种东西,十四个寄存器,内存单元,端口—就—外部设备-------各种网卡 显卡。。主板上的接口芯片。

1668161826498.jpg


各种芯片都有寄存器,由cpu读写

cpu把各个寄存器当作端口统一编制,某几个地址对应一个设备

端口读写就用in out来操作

1668161836666.jpg


端口的读写,cpu地址线选中芯片寄存器,cpu发出控制线的读命令,然后通过数据线送进cpu数据

1668161997999.jpg


精彩!

1668162005612.jpg

1668162013401.jpg


IO端口分配–共

1668162022942.jpg

1668162029492.jpg


in out只能用ax或者al来存放端口读入数据或者发送的数据

# CMOS RAM芯片—包含一个实时钟(电子表)和一个128个存储单元的ram存储器------这个128B的ram里面存内部实时钟 系统配置信息,相关的程序(用于开机时配置系统信息)

1668162039744.jpg


这块ram靠电池供电 不丢失信息—芯片由70h 71h端口读写-------70h提供地址 71提供数据

提取CMOS RAM存储的时间信息

1668162048302.jpg

提取cmos ram时间 信息 —时间信息用BCD码存放的-------

1668162058805.jpg

1668162067974.jpg

1668162076300.jpg


外设的连接和中断

1668162085994.jpg

1668162095203.jpg

1668162103020.jpg


外中断—可屏蔽中断-cpu检测到可屏蔽终端信息的时候如果IF=1那么cpu执行完当前指令后响应中断 引发中断过程,IF=0那么不响应可屏蔽中断

不可屏蔽中断 必须相应的外中断,cpu检测到不可屏蔽信息是 ,执行完当前指令后立即响应,引发终端过程,

对于8086。不可屏蔽中断的中断类型码固定为2

1668162117873.jpg

1668162126982.jpg


外中断处理过程–1.取中断类型吗 对比内部终端 cpu内部自己生产 2. 标志寄存器入栈 置if0 tf0如果中断过程中想要处理可屏蔽中断 可以用指令将if置为1 3 csip入栈 4 转去处理中断处理

不可频闭终端: 标志寄存器入栈if=0tf=0;注意csip入栈,3ip=(8),cs=(0ah)

注意 不可屏蔽中端中断值固定为2

注意8086 设置if指令 sti set if为1,cli clear 清理为0

1668162154084.jpg

PC键盘的处理过程----1键盘输入2引发9号中断3执行int9中断例程

1668162171175.jpg

1668162181599.jpg

1668162192404.jpg

1668162200599.jpg

pc机键盘的处理过程-引发终端

1668162211173.jpg


bios 键盘缓冲区在内存 能存放十五个键盘输入 用一个字存 高位的前半个字放扫描码 低位放字符码 也就是ascii码

1668162219314.jpg


控制键 切换键 处理就是 用内存的一个字节0040:17这个地方一个字节来存放键盘键盘状态---------键盘状态

1668162231874.jpg


执行int 9--------读出60h端口中的扫描码—根据扫描码分情况对待—如果自福建的扫描码,就把他的字符码送到内存的bios键盘缓冲区

如果控制键的扫描码 就将其转变为状态字节就那个 字节里面–内存的 写入内存中存储状态字节的单元然后对键盘系统进行县官的控制

1668162241437.jpg

1668162250790.jpg


实例 输入a处理过程

1668162259105.jpg

1668162270236.jpg


定制键盘输入处理----int9 中断例程----满足个性需求

1668162279986.jpg


依次显示a-z

1668162289081.jpg1668162296021.jpg

1668162302423.jpg

按下esc后改变现实颜色–

1668162314030.jpg

1668162324696.jpg1668162331107.jpg1668162337581.jpg1668162344806.jpg

按下esc改变颜色的实现—v1.0

1668162366810.jpg1668162374121.jpg1668162383124.jpg


改写中断例程-以int9 为例-------和定制处理不同,常驻内存,更加持久-------设备底层技术常用

1668162400089.jpg

1668162408834.jpg

很享受的感觉

@ 如何操作外部设备

键盘操作为例

1668162430462.jpg


对键盘输入的处理的int9h中断和int 16h中断

1668162440163.jpg


输入引发的动作

1668162449294.jpg1668162457145.jpg1668162465538.jpg


读出来 —程序员用 int16h–来做—16字 用环形队列 可存储扫描15个按键扫描码----(因为是环形的留一个判空–数据结构)

1668162476117.jpg


小结 调用16h从缓冲区读数据------int 9 和int 16是相互配合的程序------软硬件搭配 9是硬件------16软件来做

1668162485255.jpg

1668162505412.jpg


应用实例 用键盘输入更改屏幕颜色

1668162514605.jpg1668162521603.jpg

应用 字符串输入

1668162532468.jpg

1668162540314.jpg


程序的处理过程

1668162549127.jpg

1668162566107.jpg1668162575949.jpg1668162582980.jpg1668162590521.jpg1668162597805.jpg1668162603898.jpg

磁盘读写----硬盘,-------

1668162624084.jpg

BIOS提供磁盘的直接服务 int13h

1668162638095.jpg

用BIOS 对 磁盘进行读操作 int13h

1668162646234.jpg1668162653461.jpg

1668162659957.jpg

卧槽 从扇区,磁道,面都有规定—如 读取c盘 0面 1扇区的内容到0:200--------还有磁头号 驱动器号—是硬盘还是软盘

写操作

1668162678637.jpg


dos中断对磁盘文件的支持 int 21h

1668162687350.jpg


dos中断对文件操作非常强大-------比c语言提供的强大很多--------用指定的驱动器和路径创建一个新目录---------用手册

1668162698535.jpg


让计算机唱歌最后--------

1668162708276.jpg

1668162715360.jpg


相关硬件以及控制--------主要有芯片8253和 芯片8255

1668162725439.jpg


8253芯片(定时/计数器)的设置

1668162738218.jpg


注意:8253初始化 --就这样设置—ax放唱歌的频率值(大致是)8255(并行io)控制扬声器的开关------------这两个芯片的驱动 都是通过端口操作进行的

1668162751994.jpg


音符和发音频率的对应关系 对应这个 让计算机唱歌

1668160133124.jpg1668160145396.jpg1668160153463.jpg1668160164550.jpg1668160172120.jpg1668160180391.jpg1668160187906.jpg

相关文章
|
C语言 Perl
【汇编语言王爽】学习笔记p54-p79(上)
【汇编语言王爽】学习笔记p54-p79
87 0
【汇编语言王爽】学习笔记p54-p79(上)
|
人工智能 BI C语言
【汇编语言王爽】进阶-笔记 p22--p40(下)
【汇编语言王爽】进阶-笔记 p22--p40
74 0
【汇编语言王爽】进阶-笔记 p22--p40(下)
|
安全
【汇编语言王爽】进阶-笔记 p22--p40(上)
【汇编语言王爽】进阶-笔记 p22--p40
73 0
【汇编语言王爽】进阶-笔记 p22--p40(上)
|
C语言
【汇编语言王爽】学习笔记-p40-p54
【汇编语言王爽】学习笔记-p40-p54
68 0
【汇编语言王爽】学习笔记-p40-p54
|
存储
【汇编语言王爽】笔记1-p1-p17(上)
【汇编语言王爽】笔记1-p1-p17
78 0
【汇编语言王爽】笔记1-p1-p17(上)
|
6天前
|
存储 C++
C/C++中的整数除法运算与汇编指令DIV和IDIV
C/C++中的整数除法运算与汇编指令DIV和IDIV
15 1
|
6天前
|
存储 安全 程序员
C/C++中的整数乘法运算与汇编指令MUL和IMUL
C/C++中的整数乘法运算与汇编指令MUL和IMUL
11 0