Add #$28,R4,R3
Что означает $
в этом выражении? Значение R4 равно 1224, а конечный результат должен быть 1264, но как это работает, я понятия не имею.
ответ
В некоторых ассемблерах «$» означает просто, что вы используете шестнадцатеричное значение. на архитектуре x86 обычно записывать номер с «h», или если первый символ не является цифрой, тогда вы должны использовать ноль перед 28h
или 0afh
. В C вы должны написать 0x28
.
Например, для 6510 (Commodore 64) или M68000 (например, Amiga) для этого типа '$ 28' использовался символ $ $. Я уверен, что есть и другие ассемблеры, используя эту нотацию.
В синтаксисе x86 AT & T (используется GNU 'as'),' $ 'означает немедленную константу, например' # 'в некоторых других ассемблерах (включая ARM и код OP). (В синтаксисе AT & T '.' означает адрес текущей команды, такой как' $ 'в NASM, как указано в ответе mcleod_ideafix). Таким образом, в синтаксисе AT & T 'add esi, symbol' является 4-байтовой нагрузкой от абсолютного адреса, а' add rsi, $ symbol' использует адрес символа как imm32. (То же самое для 'add esi, 0x12345678' (абсолютный адрес) против' add esi, $ 0x12345678') –
В монтажников, символ $ обычно означает две разные вещи:
- Приставка число, означает, что это число записывается в шестнадцатеричном формате.
- Само по себе $ - числовое выражение, которое оценивается как «текущая позиция», то есть адрес, в котором будет собрана следующая команда/данные.
Например:
mydata: db 0,1,2,3,4,5,6,7,8,9,$a,$b,$c,$d,$e,$f ;some decimal and
;hexadecimal numbers
datalenght equ $-mydata ;length of previous list.
jmp $ ;an infinite loop!! ($ evaluates as the current
; position just before the
; instruction is assembled,
; that is, the position where
; the JMP instruction begins)
Вы также можете увидеть $ в конце строковых констант, как строка терминатора характера, если писать или читать программы, написанные для CP/M или MS DOS. Обе ОС использовали это соглашение, поэтому системный вызов для печати строки на консоли ожидает строку с завершающим действием в долларах. Gary Kildall, создатель CP/M, никогда не раскрывал, почему он выбрал именно этот символ для маркировки конца строки.
;A very simple MSDOS program to
;display "Hello world" to console.
org 100h
mov dx,offset Message
mov ah,9
int 21h
int 20h
Message: db "Hello, world!",13,10,'$'
;A very simple CP/M program to
;display "Hello world" to console.
org $100
mov de,Message
mov c,9
call 5 ;call bdos
rst 0
Message: db "Hello, world!",13,10,'$'
Упоминание '' 'как данных (внутри кавычек) для строковых констант MS-DOS типа отвлекает от точки около' $ ' как синтаксический элемент. Я всегда задавался вопросом, почему такой не-неясный символ ASCII был выбран в качестве ограничителя строк MS-DOS с тех пор, как он видел его в 16-битных вопросах на SO, поэтому спасибо за урок истории. –
'Gary Kildall, создатель CP/M, никогда не раскрывал, почему он выбрал именно этот символ ('$') для маркировки конца строки.« Я предполагал, что это был очевидный выбор, только с коротким списком символов на выбор, * «Хорошо, какой символ поможет нам вспомнить ключевое слово, которое начинается с« S »? Ах, да, ** тот, который выглядит как *' S' *: * '$' *! "*** – ashleedawg
- 1. Что означает ESP в сборе?
- 2. Что означает * адрес (найденный в printf) в сборе?
- 3. ".long." Что это означает при кодировании в сборе рук?
- 4. Что такое скобка «{» означает в сборе AT & T
- 5. Ветвление в сборе в сборе
- 6. Что означает #/означает в URL?
- 7. Что означает | = означает в C?
- 8. Что означает: = означает в Go?
- 9. Что означает «$», означает в рубине?
- 10. Что означает/... означает в Matlab?
- 11. Что означает "?" означает в запросе?
- 12. Что означает «-» означает в haml?
- 13. Что означает * = означает в Java?
- 14. Что означает: означает в C?
- 15. Что означает: означает в php?
- 16. Что означает: * означает в C++?
- 17. Что означает: = означает в VB?
- 18. Что означает «,» означает в синтаксисе?
- 19. Что означает: означает в x86?
- 20. Что означает: означает в ржавчине?
- 21. Странное мгновенное значение в сборе в сборе
- 22. Обработка трубопроводов в сборе в сборе
- 23. Использование внешнего символа в сборе в сборе
- 24. Запись в. В сборе
- 25. Обработка исключений в сборе в сборе
- 26. Подсчет Hex в сборе
- 27. Что означает :: означает :: BOOL?
- 28. Что означает «означает»?
- 29. Что означает * и означает?
- 30. Что означает * NSFileProtectionComplete * означает?
Было бы полезно, если бы вы упомянули ** Что ** вид ассемблере это. Хотя это похоже на MIPS, может быть, это на самом деле какой-то чужой процессор, который был реконструирован в Area 51. В этом случае вам стоит надеяться, что инопланетный материнство еще не установило Norton Antivirus. –
Если 1224 + $ 28 = 1264, то я бы предположил, что $ означает hex, потому что hex 28 = 40. –
@RogerRowland Победитель кулинарного победителя! –