Alexey, ты ещё здесь сидишь?
Понедельник Январь 24 2005 11:37, Alexey Boyko wrote to George Shepelev:
AB>>> ps: Мне, например, больше нравится интелевская система, которая AB>>> на 8080 и x86. GS>> Синтаксис 8080? Да им только школьников на уроках информатики GS>> пугать! ;-) AB> Hу займись, попугай. ;)
Ты что, забыл уже? Так я напомню. Очень наглядная демонстрация того, что экономить нужно не нажатия на клавиши, а мозги программиста. Запись слева (мнемоники 8080) понять сходу невозможно, придётся лезть в таблицу. Запись справа (то-же в мнемониках Z80) трудно сделать более наглядной. Пример выглядит как комментарий к "родному" "интеловскому" коду ;)
8080 Z80
----------------------------------------------------- XCHG EX DE,HL XTHL EX (SP),HL INC B INC B INX B INC BC ADD B ADD A,B ADI n ADD A,n ADD M ADD A,(HL) DAD H ADD HL,HL DAD SP ADD HL,SP LDAX B LD A,(BC) STAX B LD (BC),A LDA nn LD A,(nn) MVI A,B LD A,B MVI M,n LD (HL),n MOV M,C LD (HL),C LXI D,nn LD DE,nn LXI SP,nn LD SP,nn LHLD nn LD HL,(nn) SPHL LD SP,HL PUSH PSW PUSH AF POP D POP DE RC RETC RST 5 RST 28h PCHL JP (HL)
GS>> Глюки, вызываемые "родным интелевским" синтаксисом, подробно GS>> разжёваны в документации по борландовскому турбоассемблеру... AB> Я имел ввиду, что 12 - константа, а [12] - ячейка памяти с адресом 12 AB> Var - ячейка памяти, а word ptr var - адрес ячейки.
Hе очень наглядно получается.
MASM TASM Ideal
------------------------------------------------------ MOV AX,con MOV AX,con значение константы MOV AX,var MOV AX,[var] значение переменной MOV AX,word ptr var MOV AX,offset var смещение переменной
"Идеальный" вариант исключает случайный "зевок" "заклинания" word ptr. Ведь кажется, и так ясно, что в AX помещается word ;) Hе говоря уж о том, что слово offset может нелишний раз напомнить, что есть ещё и segment...
Можно ещё одним способом продемонстрировать преимущество второго варианта. Строчки примера выполняют _аналогичные_ действия, представляется очень логичным, чтобы у них была единообразная символика (работа со значением переменной) - скобочки просто напрашиваются:
MOV BX,word ptr var MOV BX,offset var MOV AX,[BX] MOV AX,[BX]
MOV AX,var MOV AX,[var]
Георгий