寄存器和常用位寫法
1、管腳
例:P1.1
2、寄存器
直接寫寄存器即可,位操作加 .X
位操作
- 清零:CLR 例:CLR P1.1
- 置位:SETB 例:SETB P1.1
- 取反:CPL 例:CRL P1.1
注:對寄存器也適用
尋址
尋址就是根據指令給出的地址尋找真實操作數地址的方式
立即尋址:
mov a,#0x01
直接尋址:
mov a,0x01
間接尋址:
mov a,@0x01
寄存器尋址:
mov a,r0
寄存器間接尋址:
mov a,@r0
相對尋址:
sjmp rel
變址尋址:
movc a, @a+dptr
位尋址:
setb p1.1
關於mov:
mov: 普通移動
movc:移動程序存儲器(code),常用於查表
movx:移動外部存儲器(external)
xch:交換兩個字節
push:把一個字節入棧
pop:把一個字節出棧
跳轉
cjne:不相等就跳轉
djnz:不等於0就循環
call:下一條指令地址的兩個字節入棧,調用子程序
ret:call入棧地址出棧,返回原程序,改變棧頂的兩個字節可以返回所需位置
nop:無操作,延時一個指令時間
運算
add:不加已存在進位標誌到最低位,並且產生進位結果,多字節操作的第一步,然後循環使用addc
addc:把已存在進位標誌加到最低位,並且產生進位結果
subb:帶借位的減法
mul:乘法指令,結果16位,低字節放累加器,高字節放b寄存器,結果超出8位時溢出標誌置位,進位標誌清零
div:除法指令,累加器內容除以b寄存器內容,結果在累加器中,餘數在b寄存器中,進位和溢出標誌位清零
inc:加一指令,ff加一得0
dec:減一指令,0減一得ff
邏輯
anl:邏輯與
orl:邏輯或
xrl:邏輯異或
cpl:求反
clr:清零
setb:置位
左移:rl
右移:rr
循環左移:rlc,最高位爲一左移後產生進位,進位標誌又移動到另一端
循環右移:rrc,類似rlc
特殊
十進制指令用於處理bcd碼和一些特殊用途
xchd:交換累加器和間接地址第四位,高四位保留原值
swap:累加器的高四位和低四位交換
僞指令
org:定位後面語句存放的程序空間
db:類似c的數組,定義8位數據表
dw:類似db,定義16位數據表
equ:類似c的define
data:給一個內存單元起名,類似c的unsigned char,同一個單元可以有多個名字
xdata:類似data,但使用外部xdata空間
bit:類似c的bit,給一個位尋址單元起名,同樣一個單元可以有多個名字
end:程序結束,彙編器對後面的語句不予處理