ASL中使用函數Store()來進行賦值操作,類似於組語的MOV
Store(0x1234, Local0)
Store(“Hello”, Local0)
5. 算術運算
ASL中不使用+-*/等符號進行運算,全部使用函數
常用的有:
Add: Add(0x1, 0x2, Local0) // Local0 = 0x1+ 0x2
And: And(0x1, 0x2, Local0) // Local0 = 0x1& 0x2
Divide: Divide(0x2, 0x1, Local0) // Local0 = 0x2/ 0x1
Mod: Mod(0x2, 0x1, Local0) //Local0 = 0x2% 0x1
Multiply: Multiply(0x2, 0x1, Local0) //Local0 = 0x1* 0x2
Nor: Nor(0x1, 0x2, Local0) //Local0 = (~0x1)& (~0x2)
Not: Not(0x1, Local0) // Local0 =~0x1
Or: Or(0x1, 0x2, Local0) // Local0 = 0x1 |0x2
ShiftLeft: ShiftLeft(0x1, 0x8, Local0) // Local0 = (0x1)<<0x8
ShiftRight: ShiftRight(0x8, 0x2, Local0) //Local0 = (0x8)>>0x2
Subtract: Subtract(0x2, 0x1, Local0) //Local0 = 0x2– 0x1
Xor: Xor(0x1, 0x2, Local0) //Local0 = 0x1 ^ 0x2
6. 邏輯運算
和算術運算一樣,ASL中同樣使用函數來進行邏輯運算
常用的有:
LAnd: LAnd(0x1, 0x2) //0x1 && 0x2
LEqual: LEqual(0x1, 0x2) // 0x1== 0x2
LGreater: LGreater(0x1, 0x2) //0x1 > 0x2
LGreaterEqual: LGreaterEqual(0x1,0x1) // 0x1 >= 0x2
LLess: LLess(0x1, 0x2) // 0x1 < 0x2
LLessEqual: LLessEqual(0x1,0x2) // 0x1 <= 0x2
LNot: LNot(0x1) //!(0x1)
LNotEqual: LNotEuqal(0x1,0x2) //0x1 != 0x2
LOr: LOr(0x1,0x2) // 0x1 || 0x2
7. 函數定義
Method(ADBG, 2) //表示有兩個輸入參數
{
// Arg0, First parameter
// Arg1, Second parameter
Store(Arg0, Local0) //局部變量0
Store(Arg1, Local1) //局部變量1
Add(Local0, Local1, Local1)
Return(Local1) //返回Local1
}
調用函數
ADBG(3, 5)