user3237507
user3237507

Reputation: 43

assembly BT sintax

I'm getting

Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm


ASCII build


E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(117) : error A2070: invalid instruc tion operands E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(118) : error A2006: undefined symbo l : axe E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(119) : error A2006: undefined symbo l : axe E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(120) : error A2006: undefined symbo l : axe E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(121) : error A2006: undefined symbo l : axe E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(123) : error A2006: undefined symbo l : axe E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(125) : error A2006: undefined symbo l : axe E:\RaamSoft\SICBasm\EasyCode\TestIOsicb2.asm(132) : error A2006: undefined symbo l : axe _ Assembly Error Press any key to continue . . .

These are statements 117 thru 134.

     bt   [esi + ebx + 4],   15    ; El año es impar? 
     mov   axe,    esi
     add   axe,    ebx
     add   axe,    4
     bt   [axe],   15              ; El año es impar?
     jc    skipdia                 ; Si, no puede ser bisiesto
     bt   [axe],   7               ; La decada es impar?
     jnc   TestMul4
     bt   [axe],   14              ; El año es 2 o 6?
     jnc   skipdia
   Pon29:  
     mov   ax,     3239h
     mov  [edi],   ax
     jmp      skipdia
   TestMul4:
     bt   [axe],   14              ; El año es 2 o 6?
     jc    skipdia                 ; Si, no puede ser bisiesto
     jmp   Pon29    

What worries me is the syntax of BT, and for that of all instructions. I have not found a clear cut explanation to this. I'm shore it must be out there. I'm also interested in instruction timings having programmed in IBM /360 in BPS Assembly for IBM 1419 which has asynchronous processing of pocket selection with time constraints.

Upvotes: 1

Views: 414

Answers (1)

JBES
JBES

Reputation: 1557

Remove the square brackets (and in the first instance, arrange for eax to hold the value you need to test in the register itself before you bit test).

[eax] = Access the address referenced by eax, not the value of eax.

Upvotes: 1

Related Questions