ASM:
- 4个数据寄存器(EAX、EBX、ECX和EDX)
ah是ax的高8位,al是低8低
2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)
[ ] 6个段寄存器(ES、CS、SS、DS、FS和GS)
ECS——代码段寄存器(Code Segment Register),其值为代码段的段值;
EDS——数据段寄存器(Data Segment Register),其值为数据段的段值;
EES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;
ESS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;
EFS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;
EGS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。
CS是值cpu执行的当前指令的段地址,DS是数据开始的段地址
1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)
1.汇编
立即数,$ 开头;寄存器,% 开头;取地址里面的值,偏移量(%寄存器);
MOV a,b;a←b;PUSH,POP 入栈与出栈
MOVSW:搬移字串指令有两种,分別是 MOVSB 和 MOVSW;MOVSB 是搬移一个字节,它是把 DS:SI 所指位址的一个位元组搬移到 ES:DI 所指的位址上,搬移后原來的內容不变,但是原来 ES:DI 所指的內容会被覆盖而且在搬移之后 SI 和 DI 会自动地址向下一个要搬移的位址;MOVSW 的作用方式都和 MOVSB 相同,所不同的是 MOVSW 每次搬移一个字,所以每次搬运完 SI和DI 会增加 2,而 CX 仍然減少一。
故设置MOV CX, #256 REP MOVSW即可搬移(REP会检查CX值)
CMP比较指令
repne scasb //扫描edi指向的字符串,扫描方向从低位地址向高位地址,如果遇到字节等于al或者ecx计数为0,则结束扫描。
CLI禁止中断发生
STL允许中断发生
2.汇编内联
3.中断
中断和异常是指明系统、处理器或当前执行程序或任务的某处出现一个事件,该事件需要处理器进行处理。