Never seen it before, so can only assume that I've never tried to use
such a construct before! The key thing is to see what the code is
assembling to and I bet it's not what you intended. So I tried
Turbo Assembler Version 3.1 13/11/14 06:45:23 Page 1
tempo2.ASM
1 0000 code segment public 'code'
2 assume cs:code
3
4 org 100h
5 0100 start:
6 0100 B0 75 mov al,[0075h]
*Warning* tempo2.ASM(6) [Constant] assumed to mean immediate constant
7 0102 90 nop
8 0103 B0 75 mov al,75h
9 0105 90 nop
10 0106 B0 75 mov al,byte ptr [75h]
*Warning* tempo2.ASM(10) [Constant] assumed to mean immediate constant
11 0108 90 nop
12 0109 B0 75 mov al,byte ptr 75h
13 010B 90 nop
14 010C A0 0075 mov al,ds:75h
15 010F 90 nop
16 0110 A0 0075 mov al,ds:[75h]
17 0113 90 nop
18
19 0114 B8 4C00 mov ax, 4c00h
20 0117 CD 21 int 21h
21
22 0119 code ends
23 end
You can see that it is completely disregarding the [..] and treating
the operand as a constant, and loading it directly into AL. Only by
explicitly providing a 'ds:' override does it assemble to the code
that I think you want it to [A0,75,00]. I've not used IDEAL mode much
but that does appear to honour the square brackets.
FWIW I assembled the same code using masm 4.0 and 5.1 with identical
results, except they didn't even give warnings!
Pete
--
Believe those who are seeking the truth.
Doubt those who find it. - André Gide