1、中断源 div t into int
2、中断向量表——中断处理程序的入口地址列表0000:0000~0000:03ff
3、中断过程:取得中断过程码N; pushf ;TF=0 IF=0; push cs; push ip; (IP)=(N*4) (CS)=(N*4+2)
4、...


[2011-03-06 11:01] 汇编语言 | 第十二章
阅读全文 |
评论次数(0) |
浏览次数(614) |
所属类型(汇编语言)
[2011-03-06 10:28] 汇编语言 | 第十一章
1、特殊寄存器(标志寄存器)——为CPU执行相关指令提供依据、控制CPU相关工作方式、存储相关指令执行后结果
2、标志寄存|15|14|13||12|11|10|9|8|7|6|5|4|3|2|1|0|中【1】、【3】、【5】、【12——15】没用
3、ZF零标志位 PF奇偶标志位【偶数个1,则为1,奇数个1为0】
SF符号标志位 CF进/借位标志位OF溢出标志位 注:CF对无符号数来讲,OF对有符号数来讲
4、技巧 inc不影响标志位,注意inc的应用
5、adc sbb sf/of联合应用
6、cmp 与 jx成对应用,但不是必须的,jx只是对标志寄存器的一种响应
7、pus...
2、标志寄存|15|14|13||12|11|10|9|8|7|6|5|4|3|2|1|0|中【1】、【3】、【5】、【12——15】没用
3、ZF零标志位 PF奇偶标志位【偶数个1,则为1,奇数个1为0】
SF符号标志位 CF进/借位标志位OF溢出标志位 注:CF对无符号数来讲,OF对有符号数来讲
4、技巧 inc不影响标志位,注意inc的应用
5、adc sbb sf/of联合应用
6、cmp 与 jx成对应用,但不是必须的,jx只是对标志寄存器的一种响应
7、pus...
阅读全文 |
评论次数(0) |
浏览次数(447) |
所属类型(汇编语言)
[2011-03-06 09:21] 汇编语言 |第十章
1、指令ret=pop ip=>(ip)=((ss)*16+(sp))
指令retf=pop ip;pop cs=> (ip)=((ss)*16+(sp)),(sp)=(sp)+2;(cs)=((ss)*16+(sp)),(sp)=(sp)+2
2、指令call =push ip;jmp near ptr 标号——将当前ip压入栈中,转到标号处执行指令
3、指令call far ptr 标号实现段间转移=push cs;push ip;jmp far ptr 语句标号
4、call 寄存器=push ip;jmp 16位寄存器
5、call ret联合应用实现模块化设计——
标号:...
指令retf=pop ip;pop cs=> (ip)=((ss)*16+(sp)),(sp)=(sp)+2;(cs)=((ss)*16+(sp)),(sp)=(sp)+2
2、指令call =push ip;jmp near ptr 标号——将当前ip压入栈中,转到标号处执行指令
3、指令call far ptr 标号实现段间转移=push cs;push ip;jmp far ptr 语句标号
4、call 寄存器=push ip;jmp 16位寄存器
5、call ret联合应用实现模块化设计——
标号:...
阅读全文 |
评论次数(0) |
浏览次数(700) |
所属类型(汇编语言)
[2011-03-05 23:34] 汇编语言 | 第九章
1、转移指令:条件转移指令、非条件转移指令、循环指令、中断、过程
2、操作符offset:取得标号的偏移地址
3、在一般的汇编指令中,idata不管是立即数还是内存单元地址都会在机器指令中出现
4、CPU执行JMP指令时不需要知道目的地址,其工作原理为CPU计算将要执行的指令地址与现在的IP差值(位移),用补吗表示
JMP SHORT S 8位位移【-128~127】
JMP NEAR S 16位位移【-32768~32767】
JMP FAR PTR S 段间转移
JMP WORD PTR 内存单元地址
JMP DWORD PTR 内存单元地址
5、条件转移指令都是段内转移...
2、操作符offset:取得标号的偏移地址
3、在一般的汇编指令中,idata不管是立即数还是内存单元地址都会在机器指令中出现
4、CPU执行JMP指令时不需要知道目的地址,其工作原理为CPU计算将要执行的指令地址与现在的IP差值(位移),用补吗表示
JMP SHORT S 8位位移【-128~127】
JMP NEAR S 16位位移【-32768~32767】
JMP FAR PTR S 段间转移
JMP WORD PTR 内存单元地址
JMP DWORD PTR 内存单元地址
5、条件转移指令都是段内转移...
阅读全文 |
评论次数(0) |
浏览次数(519) |
所属类型(汇编语言)
[2011-03-05 19:58] 汇编语言 | 第八章
1、计算机处理数据的两个基本问题(要处理的数据在什么地方、要处理的数据有多长)
2、reg: ax,bx,cx,da,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
sreg:ds,ss,cs,es
3、只有bx/si/di/bp可以[...]进行内存寻址 | 加上idata
4、只要[...]有bp,那么段地址就默认在ss中
5、【数据位置】寻址——直接寻址、寄存器寻址、寄存器相对寻址、相对基址变址寻址
6、【数据长度】通过寄存器名指明要处理数据长度、没有寄存器名字的时候用S PTR指明要处理数据长度
7、div指令:被除数放在AX DX中,除数放...
2、reg: ax,bx,cx,da,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
sreg:ds,ss,cs,es
3、只有bx/si/di/bp可以[...]进行内存寻址 | 加上idata
4、只要[...]有bp,那么段地址就默认在ss中
5、【数据位置】寻址——直接寻址、寄存器寻址、寄存器相对寻址、相对基址变址寻址
6、【数据长度】通过寄存器名指明要处理数据长度、没有寄存器名字的时候用S PTR指明要处理数据长度
7、div指令:被除数放在AX DX中,除数放...
阅读全文 |
评论次数(0) |
浏览次数(456) |
所属类型(汇编语言)
[2011-03-05 19:31] 汇编语言 | 第七章
1、[bx+idata]的寻址方式可以用更高级的方式看待要处理的数据
esp:data segment
db 'basic'
db 'BASIC'
data ends
起始地址[相对起始地址偏移地址]=[起始地址+相对起始地址偏移地址]
2、SI DI 与BX功能相近,但是不能分成两个八位寄存器
3、寻址方式——1.[idata] 2.[bx] 3.[bx+idata] 4.[bx+si]
5.[bx+si+idata]...
esp:data segment
db 'basic'
db 'BASIC'
data ends
起始地址[相对起始地址偏移地址]=[起始地址+相对起始地址偏移地址]
2、SI DI 与BX功能相近,但是不能分成两个八位寄存器
3、寻址方式——1.[idata] 2.[bx] 3.[bx+idata] 4.[bx+si]
5.[bx+si+idata]...
阅读全文 |
评论次数(0) |
浏览次数(634) |
所属类型(汇编语言)
[2011-03-05 18:23] 汇编语言 | 第六章
1、dw=define word定义字型数据
2、有定义了数据的代码源程序前面的单元用来定义数据,后面的才是机器指令,但是IP却是0,为了执行程序指令,可以设定IP值使CS:IP指向第一条指令,但,若这样的话必须用DEBUG执行程序,我们可以在源程序中指明程序入口START 及其END START,
注:END用来指明程序入口
3、在代码段里定义数据起到开辟空间的作用
4、设置栈的时候,注意空栈应该+1
esp 开辟0000~001F空间作为栈,应MOV SP,20
5、定义多个段的时候,注意引用段名,段名被解释成为表示地址
的数值...
2、有定义了数据的代码源程序前面的单元用来定义数据,后面的才是机器指令,但是IP却是0,为了执行程序指令,可以设定IP值使CS:IP指向第一条指令,但,若这样的话必须用DEBUG执行程序,我们可以在源程序中指明程序入口START 及其END START,
注:END用来指明程序入口
3、在代码段里定义数据起到开辟空间的作用
4、设置栈的时候,注意空栈应该+1
esp 开辟0000~001F空间作为栈,应MOV SP,20
5、定义多个段的时候,注意引用段名,段名被解释成为表示地址
的数值...
阅读全文 |
评论次数(0) |
浏览次数(517) |
所属类型(汇编语言)
[2011-03-05 18:08] 汇编语言 | 第五章
1、loop=>(cx)=(cx)-1;判断cx是否为零,不为零,则转至标识地址处;否则执行下条语句;
2、loop cx程序框架
mov cx,循环次数
s:
循环执行程序段
loop s
3、注意g p命令在循环程序debug中的应用
4、汇编源程序忠注意“mov ax,[0]”会被编译成“mov ax,0”
但可以用“mov ax, () mov ds,ax mov bx,0 mov ax,[bx]”
或“mpv ax,() mov ds,ax mov ax,ds:[()]”显式给出段寄存器来解决
5、段前缀:用来显式指明内存单元的段地址 ...
2、loop cx程序框架
mov cx,循环次数
s:
循环执行程序段
loop s
3、注意g p命令在循环程序debug中的应用
4、汇编源程序忠注意“mov ax,[0]”会被编译成“mov ax,0”
但可以用“mov ax, () mov ds,ax mov bx,0 mov ax,[bx]”
或“mpv ax,() mov ds,ax mov ax,ds:[()]”显式给出段寄存器来解决
5、段前缀:用来显式指明内存单元的段地址 ...
阅读全文 |
评论次数(0) |
浏览次数(298) |
所属类型(汇编语言)
[2011-03-05 17:21] 汇编语言 | 第四章
1、segment——ends(ends=end segment)
2、end提示程序结束
3、assume 假定某一寄存器与程序中"segment ends"定义的段相关联
4、标号:标号指代一个地址
5、源程序 伪指令+程序[程序结构:0.关联段 1.定义段 2.汇编程序 3.程序结束 4.程序返回]+标号
6、编辑源程序asm 编译生成目标文件 连接形成可执行文件
7、连接的作用: a若将大程序分开编译后,需要连接程序将他们连接在一起,形成可执行文件b若掉用库中程序,需要将库文件和目标文件连接c编译成机器代码的目标文件后,有些内容还不能生成可执行程序,需要连接程序进行处理
...
2、end提示程序结束
3、assume 假定某一寄存器与程序中"segment ends"定义的段相关联
4、标号:标号指代一个地址
5、源程序 伪指令+程序[程序结构:0.关联段 1.定义段 2.汇编程序 3.程序结束 4.程序返回]+标号
6、编辑源程序asm 编译生成目标文件 连接形成可执行文件
7、连接的作用: a若将大程序分开编译后,需要连接程序将他们连接在一起,形成可执行文件b若掉用库中程序,需要将库文件和目标文件连接c编译成机器代码的目标文件后,有些内容还不能生成可执行程序,需要连接程序进行处理
...
阅读全文 |
评论次数(0) |
浏览次数(277) |
所属类型(汇编语言)
[2011-03-05 16:45] 汇编语言 | 第三章
1、DS:将要访问的数据的段地址
2、MOV ADD SUB [寄存器 | 立即数、内存单元、寄存器]
3、栈:“特殊”后进先出LIFO(First in Last out)
4、栈的操作入栈PUSH 出栈POP
5、SS段寄存器 SP偏移地址寄存器[类似于IP]
6、入栈时,栈顶由高地址向低地址方向增长
7、栈只执行字型数据,SP +/- 2
8、注意防止栈顶越界
9、PUSH POP | 寄存器 内存单元
10、PUSH => 1.SP=SP-2 2.向SS:SP传送数据
POP => 1.取出数据 2.SP=SP+2;
11、我们可以将内存中的一部...
2、MOV ADD SUB [寄存器 | 立即数、内存单元、寄存器]
3、栈:“特殊”后进先出LIFO(First in Last out)
4、栈的操作入栈PUSH 出栈POP
5、SS段寄存器 SP偏移地址寄存器[类似于IP]
6、入栈时,栈顶由高地址向低地址方向增长
7、栈只执行字型数据,SP +/- 2
8、注意防止栈顶越界
9、PUSH POP | 寄存器 内存单元
10、PUSH => 1.SP=SP-2 2.向SS:SP传送数据
POP => 1.取出数据 2.SP=SP+2;
11、我们可以将内存中的一部...
阅读全文 |
评论次数(0) |
浏览次数(270) |
所属类型(汇编语言)