系统开机或者重启。
1.BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
2.读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
3.检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设...
[2013-04-12 23:38] 主引导扇区的读取流程
阅读全文 |
评论次数(0) |
浏览次数(656) |
所属类型(汇编笔记)
[2013-04-12 19:50] 17。3字符串输入
assume cs:code
code segment
start: mov ax,2000h
mov ds,ax
mov si,0
mov dl,0
mov dh,20
call getstr
mov ax,4c00h
int 21h
;子程序:完整接受字符串
getstr: push ax
getstrs: mov ah,0
int 16h
cmp al,20h
jb nochar ;ASCII码小于20H,说明输入的不是字符。
...
code segment
start: mov ax,2000h
mov ds,ax
mov si,0
mov dl,0
mov dh,20
call getstr
mov ax,4c00h
int 21h
;子程序:完整接受字符串
getstr: push ax
getstrs: mov ah,0
int 16h
cmp al,20h
jb nochar ;ASCII码小于20H,说明输入的不是字符。
...
阅读全文 |
评论次数(0) |
浏览次数(664) |
所属类型(汇编笔记)
[2013-04-10 16:42] 第16章 直接定址表
1.标号(带冒号):在汇编源程序中,除了汇编指令和伪指令外,还有一些标号,比如“code",一个标号指代了一个地址。
比如code在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的地址。
像我们原来用过的code\a\b\start\s等标号,仅仅表示了内存单元的地址。
使用范围:只能在代码段中使用,不能在其他段中使用。
2.数据标号(不带冒号):除了上述标记存储数据的单元的地址外还标记了其它长度。
例如:code segment
a db 1,2,3,4,5,6,7,8
b dw 0
code ends
标号a:...
比如code在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的地址。
像我们原来用过的code\a\b\start\s等标号,仅仅表示了内存单元的地址。
使用范围:只能在代码段中使用,不能在其他段中使用。
2.数据标号(不带冒号):除了上述标记存储数据的单元的地址外还标记了其它长度。
例如:code segment
a db 1,2,3,4,5,6,7,8
b dw 0
code ends
标号a:...
阅读全文 |
评论次数(0) |
浏览次数(674) |
所属类型(汇编笔记)
[2013-04-10 16:11] 第15章 外中断
本章解决两个问题:一是外设的输入随时可能发生,CPU如何得知?二是CPU从何处得到外设的输入。
第一个问题:CPU通过端口和外部设备进行联系。CPU<->port<->芯片<->外设
第二个问题:CPU提供中断机制来满足这种需要。当CPU外部有需要处理的事情发生的时候,比如外设的输入到达
相关芯片将向CPU发出相应的中断信息。CPU在执行完当前指令后,可以检测到发送过来的中断信息,引发中断过程
处理外设输入。
1.中断包含内中断和外中断。
内中断在CPU内部产生,有4种情况:除法错误、单步执行、执行INTO指令、执行INT指令时将产生相应的中断信息。
外中断是从外部向CP...
第一个问题:CPU通过端口和外部设备进行联系。CPU<->port<->芯片<->外设
第二个问题:CPU提供中断机制来满足这种需要。当CPU外部有需要处理的事情发生的时候,比如外设的输入到达
相关芯片将向CPU发出相应的中断信息。CPU在执行完当前指令后,可以检测到发送过来的中断信息,引发中断过程
处理外设输入。
1.中断包含内中断和外中断。
内中断在CPU内部产生,有4种情况:除法错误、单步执行、执行INTO指令、执行INT指令时将产生相应的中断信息。
外中断是从外部向CP...
阅读全文 |
评论次数(0) |
浏览次数(645) |
所属类型(汇编笔记)
[2013-04-05 18:10] 8086 汇编指令速查手册
一、数据传输指令
───────────────────────────────────────
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POP...
───────────────────────────────────────
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POP...
阅读全文 |
评论次数(0) |
浏览次数(225) |
所属类型(汇编笔记)
[2013-03-31 09:27] 第14章 端口2
1.CPU可以直接读写3个地方的数据,一是CPU内部的寄存嚣,二是内存单元,三是端口。
2.CPU对这些地方的读写都是通过控制线来区分并且发布读写命令的。
3.CPU最多可以定位64KB个不同的端口,地址范围是0~65535.对0~255以内的端口可以直接寻址
对256~65535的端口读写时,端口号放在DX中。
4.IN、OUT指令分别用于从端口读取数据和往端口写入数据。
5.CMOS RAM芯片的有70H和71H两个端口,一个放地址,一个放数据。
6.逻辑移位指令SHL SHR
SHL : 将一个寄存器或内存单元中的数据向左移位,将最后移出的一位写入到CF中,最低位用0补充。...
2.CPU对这些地方的读写都是通过控制线来区分并且发布读写命令的。
3.CPU最多可以定位64KB个不同的端口,地址范围是0~65535.对0~255以内的端口可以直接寻址
对256~65535的端口读写时,端口号放在DX中。
4.IN、OUT指令分别用于从端口读取数据和往端口写入数据。
5.CMOS RAM芯片的有70H和71H两个端口,一个放地址,一个放数据。
6.逻辑移位指令SHL SHR
SHL : 将一个寄存器或内存单元中的数据向左移位,将最后移出的一位写入到CF中,最低位用0补充。...
阅读全文 |
评论次数(0) |
浏览次数(262) |
所属类型(汇编笔记)
[2013-03-30 16:07] 第14章 端口1
1.接口与端口:
接口是每个外部设备或每种外设与微处理器相连时使用的电路。
一般在接口的内部除了与外设打交道的工作电路外,还包含一组程序可访问的寄存器,这些寄存器可以具有相互独立的地址,也可以几个一组,共用一个地址,这样的寄存器或寄存器组称为输入/输出端口。
1)CPU以访问端口的形式来访问接口。进而CPU通过这些端口与该接口所连接的外部设备进行信息交换。
2)接口上可以包含唯一的端口,也可以包含几个端口。
3)对CPU程序来说,接口仅是一个笼统的概念,而接口中的各个端口寄存器是CPU程序与接口打交道的具体对象。
4)端口的地址和端口的数据是程序唯一可见的内容。
5)端口一般分为...
接口是每个外部设备或每种外设与微处理器相连时使用的电路。
一般在接口的内部除了与外设打交道的工作电路外,还包含一组程序可访问的寄存器,这些寄存器可以具有相互独立的地址,也可以几个一组,共用一个地址,这样的寄存器或寄存器组称为输入/输出端口。
1)CPU以访问端口的形式来访问接口。进而CPU通过这些端口与该接口所连接的外部设备进行信息交换。
2)接口上可以包含唯一的端口,也可以包含几个端口。
3)对CPU程序来说,接口仅是一个笼统的概念,而接口中的各个端口寄存器是CPU程序与接口打交道的具体对象。
4)端口的地址和端口的数据是程序唯一可见的内容。
5)端口一般分为...
阅读全文 |
评论次数(0) |
浏览次数(289) |
所属类型(汇编笔记)
[2013-03-29 16:11] 第13章 int 指令
1.int n指令执行过程
取中断类型码n->flag入栈->IF=0,TF=0->CS、IP入栈->(IP)=(N*4),(CS)=(N*4+2)
2.可以在程序中使用INT指令调用任何一个中断的中断处理程序。其功能与CALL类似。
3.编写中断例程
1)编写实现功能的程序;
2)安装程序,将其安装在0:200处;
3)设置中断向量表,将程序的入口地址保存在中断类型码N的表项中,
使其成为中断N的中断例程。
注意:在中断例程后面要使用iret指令,同时要避免寄存器冲突。
int 与 iret配合使用,call与ret\retf配合使用。
4.中断例程模拟LOOP指令
...
取中断类型码n->flag入栈->IF=0,TF=0->CS、IP入栈->(IP)=(N*4),(CS)=(N*4+2)
2.可以在程序中使用INT指令调用任何一个中断的中断处理程序。其功能与CALL类似。
3.编写中断例程
1)编写实现功能的程序;
2)安装程序,将其安装在0:200处;
3)设置中断向量表,将程序的入口地址保存在中断类型码N的表项中,
使其成为中断N的中断例程。
注意:在中断例程后面要使用iret指令,同时要避免寄存器冲突。
int 与 iret配合使用,call与ret\retf配合使用。
4.中断例程模拟LOOP指令
...
阅读全文 |
评论次数(0) |
浏览次数(263) |
所属类型(汇编笔记)
[2013-03-27 15:13] 第12章 内中断
一、内中断产生的四种情况:
(1).除法错误; 中断类型码:0
(2).单步执行; 中断类型码:1
(3).执行INTO指令;中断类型码:4
(4).执行INT指令。 中断类型码:n,字节型立即数。
二、一些基本概念
(1)中断信息:CPU在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的
或者内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理,这种
特殊的信息,我们可以称其为中断信息。
(2)中断源:将产生中断信息的事件,即中断信息的来源,简称为中断源。
(3)中断类型码:用来标识中断信息的来源的一个字节型数据。可以表示256种来源。
(4)中断...
(1).除法错误; 中断类型码:0
(2).单步执行; 中断类型码:1
(3).执行INTO指令;中断类型码:4
(4).执行INT指令。 中断类型码:n,字节型立即数。
二、一些基本概念
(1)中断信息:CPU在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的
或者内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理,这种
特殊的信息,我们可以称其为中断信息。
(2)中断源:将产生中断信息的事件,即中断信息的来源,简称为中断源。
(3)中断类型码:用来标识中断信息的来源的一个字节型数据。可以表示256种来源。
(4)中断...
阅读全文 |
评论次数(0) |
浏览次数(230) |
所属类型(汇编笔记)
[2013-03-20 11:55] 第11章 标志寄存器5
条件转移指令Jcc根据指定的条件确定程序是否发生转移:
•如果满足条件,则程序转移到目标地址去执行程序
•不满足条件,则程序将顺序执行下一条指令
其通用格式为:
Jcc label ; 条件满足,发生转移;否则,顺序执行
可以根据判断的条件将条件转移指令分成两类。
前10个为一类,它们将5个常用状态标志为0或为1作为条件。
后8个为另一类(其中有2个与前一类重叠),将4种大小关系作为条件:
•无符号数的大小关系用高(Above)、低(Below)表示
•有符号数的大小关系用大(Greater)、小(Less)表示
编程应用中,你可以通过英文(原文对应助记符)熟悉cc...
•如果满足条件,则程序转移到目标地址去执行程序
•不满足条件,则程序将顺序执行下一条指令
其通用格式为:
Jcc label ; 条件满足,发生转移;否则,顺序执行
可以根据判断的条件将条件转移指令分成两类。
前10个为一类,它们将5个常用状态标志为0或为1作为条件。
后8个为另一类(其中有2个与前一类重叠),将4种大小关系作为条件:
•无符号数的大小关系用高(Above)、低(Below)表示
•有符号数的大小关系用大(Greater)、小(Less)表示
编程应用中,你可以通过英文(原文对应助记符)熟悉cc...
阅读全文 |
评论次数(0) |
浏览次数(242) |
所属类型(汇编笔记)