
HI,各位HACK友,小编又来发教程水点文章了:BTST和TST区别。前些天QQ2群大家在讨论这个问题,我直接搬运重点了。
一个有B,一个没有B,Bit位测试。
TST是比较两个操作数是不是一样大,BTST是比较指一个操作数的指定Bit位是不是1。
核心区别:TST检测整个寄存器/内存单元是否为0,BTST检测指定bit位是否为1,仅影响CCR的Z位。
举例说明:
1. TST指令(检测整体是否为0):
move.w #$0001, d0 ; d0 = 0000 0000 0000 0001(二进制)
tst.w d0 ; 检测d0的16位是否全0 → 非0,Z=0 ; 若d0=$0000,tst后Z=1
2. BTST指令(检测指定bit位):
move.w #$0001, d0 ; d0 = 0000 0000 0000 0001
btst #0, d0 ; 检测bit0是否为1 → 是,Z=0
btst #1, d0 ; 检测bit1是否为1 → 否,Z=1
简单说:TST看“整体是不是空的”,BTST看“某个特定位置有没有标记”。