中断,IDE环境汇编语法
中断的机制:
在地址0处有中断向量表,表中有多个项,每一项4字节,是中断程序的入口地址(seg:offset)。
Nop指令和xchg ax,ax的机器码一样
封锁前缀指令lock,可放在任何指令前面,效果是封锁总线,使别的控制器无法控制总线,指令执行完后解除封锁,常用于多线程同步,例如InterLocked*系列API
return InterlockedExchangeAdd(Addend, Value) + Value;
00292D38 8B 45 0C mov eax,dword ptr [Value]
00292D3B 8B 4D 08 mov ecx,dword ptr [Addend]
00292D3E F0 0F C1 01 lock xadd dword ptr [ecx],eax
00292D42 03 45 0C add eax,dword ptr [Value]
暂停指令HLT,使CPU进入暂停状态,CPU复位或有外部中断时恢复。
交权指令ESC,CPU发现是浮点指令时,交给浮点寄存器运行。
鞥带指令WAIT,交权后是否等待浮点寄存器的执行结果。
IDE环境中的汇编:
硬指令:产生汇编代码的指令。
伪指令:不产生汇编代码的指令,写给汇编处理程序看的,例如说明数据,定义变量。
标识符可使用4个特殊符号(@$_?)
默认情况下不区分小写
编编程序必须在末尾标明入口,如:end START
数据段可以放代码,代码段也可以放数据。
代码定式:
if(...){
...
}
else{
...
}
Jxx ELSE
...
Jmp ENDIF
ELSE:
...
ENDIF:
编译:ml /c ToAscii.asm
链接:link16 ToAscii.obj