cpu在下列情况下会发生内中断。
1.除法错误
2.单步执行
3.执行into指令
4.执行int指令
内存0000:0000到0000:03ff的1024个单元中存放着中断向量表
8086cpu中断过程:
1.中断类型码
2.标志寄存器的值入栈
3.设置寄存器tf=0,if=0
4.cs的内容入栈。
5.ip的内容入栈。
6.在内存中断类型码*4和中断类型码*4+2的两个字单元中读取中断处理程序的入口地址设置ip和cs。...

[2010-10-21 22:04] 内中断
阅读全文 |
评论次数(0) |
浏览次数(335) |
所属类型(默认类型)
[2010-10-12 04:33] 标志寄存器
0位cf
2位pf
6位zf
7位sf
10位df
11位of
zf标志零标志位
如果结果为零那么zf=1,如果不为零,那么zf=0
影响标志寄存器的:add,sub,mul,div,inc,or,and等运算指令。
而传送指令不影响标志器。
pf奇偶标志位
如果bit位中1的个数是否偶数,如果个数为偶数pf=1
如果为奇数pf=0
sf符号标志器
其结果是否为负,如果为负数sf=1,如果非负sf=0
cf进位标志器
只对无符号符号的运算
记录进位。
of标志
溢出标志器
如果溢出就为1
记录有符号数运算的结果是否溢出。
ad...
2位pf
6位zf
7位sf
10位df
11位of
zf标志零标志位
如果结果为零那么zf=1,如果不为零,那么zf=0
影响标志寄存器的:add,sub,mul,div,inc,or,and等运算指令。
而传送指令不影响标志器。
pf奇偶标志位
如果bit位中1的个数是否偶数,如果个数为偶数pf=1
如果为奇数pf=0
sf符号标志器
其结果是否为负,如果为负数sf=1,如果非负sf=0
cf进位标志器
只对无符号符号的运算
记录进位。
of标志
溢出标志器
如果溢出就为1
记录有符号数运算的结果是否溢出。
ad...
阅读全文 |
评论次数(0) |
浏览次数(349) |
所属类型(默认类型)
[2010-09-29 17:30] 第十章 call and ret
ret用栈中的数据,修改ip的内容,实现近转移。
pop ip
retf用栈中的数据,修改cs和ip的内容,从而实现远转移。
pop ip
pop cs
call
1.将当前的ip或cs和ip压入栈中。
2.转移。
push ip
jmp near ptr 标号。
call far ptr 标号
push cs
push ip
jmp far ptr 标号。
call word ptr 内存单元地址
push ip
jmp word ptr 内存单元地址
push ip
ip=内存单元地址。
call dword ptr 内存单元地址
p...
pop ip
retf用栈中的数据,修改cs和ip的内容,从而实现远转移。
pop ip
pop cs
call
1.将当前的ip或cs和ip压入栈中。
2.转移。
push ip
jmp near ptr 标号。
call far ptr 标号
push cs
push ip
jmp far ptr 标号。
call word ptr 内存单元地址
push ip
jmp word ptr 内存单元地址
push ip
ip=内存单元地址。
call dword ptr 内存单元地址
p...
阅读全文 |
评论次数(0) |
浏览次数(329) |
所属类型(默认类型)
[2010-09-22 04:58] 第九章
offset:
功能:取得标号的偏移地址。
s:mov ax, offset s
jmp
功能:可以只修改IP,也可以同时修改cs和Ip
jmp short
功能:实现的是段内短转移。
它对ip修改的范围为-128-127.
jmp short s
并不需要转移的目标地址。
(IP)=(IP)+8位位移。
8位位移=标号处的地址-jmp指令后的第一个字节的地址。
jmp near =jmp short.
jmp far ptr
实现的是段间转移。
指明了指令用标号的段地址和偏移地址修改cs和ip
jmp far ptr s
jmp wor...
功能:取得标号的偏移地址。
s:mov ax, offset s
jmp
功能:可以只修改IP,也可以同时修改cs和Ip
jmp short
功能:实现的是段内短转移。
它对ip修改的范围为-128-127.
jmp short s
并不需要转移的目标地址。
(IP)=(IP)+8位位移。
8位位移=标号处的地址-jmp指令后的第一个字节的地址。
jmp near =jmp short.
jmp far ptr
实现的是段间转移。
指明了指令用标号的段地址和偏移地址修改cs和ip
jmp far ptr s
jmp wor...
阅读全文 |
评论次数(0) |
浏览次数(358) |
所属类型(默认类型)
[2010-09-13 04:46] 新手写实验七
assume cs:code,es:table,ds:data
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995',
;以上是表示21年的21个字符串
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd...
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995',
;以上是表示21年的21个字符串
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd...
阅读全文 |
评论次数(0) |
浏览次数(369) |
所属类型(默认类型)
[2010-09-12 05:30] 第八章
寄存器
bx,si,di和bp
数据位置的表达
1.立即数
2.寄存器
3.段地址和偏移地址
处理数据:
1.字操作
word ptr
2.字节操作
byte ptr
div指令
除数:有8位和16位两种,在一个reg或内存单元中。
被除数:默认放在ax或dx和ax中,dx存放高16位,ax
存放低16位。
结果:8位 al储存商,ah储存余数。
16位 ax除数商,dx储存余数。
dd定义字节型和字型数据
dup是一个操作符,用来进行数据的重复。
db 3 dup (0) 定义3个字节,他们的值都是,0
db 3 dup (0,1,2)定义...
bx,si,di和bp
数据位置的表达
1.立即数
2.寄存器
3.段地址和偏移地址
处理数据:
1.字操作
word ptr
2.字节操作
byte ptr
div指令
除数:有8位和16位两种,在一个reg或内存单元中。
被除数:默认放在ax或dx和ax中,dx存放高16位,ax
存放低16位。
结果:8位 al储存商,ah储存余数。
16位 ax除数商,dx储存余数。
dd定义字节型和字型数据
dup是一个操作符,用来进行数据的重复。
db 3 dup (0) 定义3个字节,他们的值都是,0
db 3 dup (0,1,2)定义...
阅读全文 |
评论次数(0) |
浏览次数(356) |
所属类型(默认类型)
[2010-09-06 02:40] 实验5
程序返回前
ds=1533
ss=1543
cs=1545
程序返回后
ds=1543
ss=1544
cs=1545
stack=1544
data=1543...
ds=1533
ss=1543
cs=1545
程序返回后
ds=1543
ss=1544
cs=1545
stack=1544
data=1543...
阅读全文 |
评论次数(0) |
浏览次数(298) |
所属类型(默认类型)
[2010-09-06 02:40] 实验5
程序返回前
ds=1533
ss=1543
cs=1545
程序返回后
ds=1543
ss=1544
cs=1545
stack=1544
data=1543...
ds=1533
ss=1543
cs=1545
程序返回后
ds=1543
ss=1544
cs=1545
stack=1544
data=1543...
阅读全文 |
评论次数(0) |
浏览次数(490) |
所属类型(默认类型)
[2010-09-05 18:37] 第六章
dw 定义字型数据
end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。
cs:code ,ds:data, ss:stack
mov ax,stack
mov ss,ax
mov sp,20h
mov ax,data
mov ds,ax
cpu完全是靠程序中具体的汇编指令,和汇编指令对cs:ip,ss:sp,ds等寄存器的设置来决定的。...
end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。
cs:code ,ds:data, ss:stack
mov ax,stack
mov ss,ax
mov sp,20h
mov ax,data
mov ds,ax
cpu完全是靠程序中具体的汇编指令,和汇编指令对cs:ip,ss:sp,ds等寄存器的设置来决定的。...
阅读全文 |
评论次数(0) |
浏览次数(322) |
所属类型(默认类型)
[2010-08-29 17:28] 第4章第一个程序
过程
1.编写汇编源程序
2.对元程序进行编译连接
3.执行可执行文件中的程序
1.汇编指令
有对应的机器码的指令
2.伪指令
没有对应的机器指令,是由编译器来执行的指令,
编译器根据伪指令来进行相关的编译工作。
A.segment和ends的功能是定义一个段
B.end 是一个汇编程序的结束标记。
C.assume 这条伪指令的含义为“假设”
程序返回
mov ax,4c00H
int 21H
一般来说,程序在编译时被编译器发现的错误是语法错误
在运行时发生的错误时逻辑错误。
编译源程序 Edit
编译 masm
连接 link
...
1.编写汇编源程序
2.对元程序进行编译连接
3.执行可执行文件中的程序
1.汇编指令
有对应的机器码的指令
2.伪指令
没有对应的机器指令,是由编译器来执行的指令,
编译器根据伪指令来进行相关的编译工作。
A.segment和ends的功能是定义一个段
B.end 是一个汇编程序的结束标记。
C.assume 这条伪指令的含义为“假设”
程序返回
mov ax,4c00H
int 21H
一般来说,程序在编译时被编译器发现的错误是语法错误
在运行时发生的错误时逻辑错误。
编译源程序 Edit
编译 masm
连接 link
...
阅读全文 |
评论次数(0) |
浏览次数(332) |
所属类型(默认类型)
『 查看更多文章 』