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.中断

中断和异常是指明系统、处理器或当前执行程序或任务的某处出现一个事件,该事件需要处理器进行处理。

results matching ""

    No results matching ""