Другие языки программирования и технологии
подскажите не понимаю примеры ассемблера
Все дописки это то как я понимаю то что делается - подскажите верны ли они ? Примеры .data PARAMdw 1122h PARAM1db 12h PARAM2 dd 12345678h .code moveax,0 mov ebx, 0 mov ecx,0 mov edx, 0 mov al, byte ptr [PARAM] - т.е. в AL мы ложим 2ю часть от [PARAM] _так ли это ? mov bl, [PARAM1] mov ecx,[PARAM2] mov dx, word ptr [PARAM2] - т.е. в DX ложим 2-ю часть [PARAM2]_так ли это ? mov bh, byte ptr [PARAM2] - т.е. в BH лыжим 4-ю часть [PARAM2]_так ли это ? После всех манипуляций состояние регистров будет таким: AL = 22 BL = 12 ECX = 12345678 DX = 5678 BH = 78 Ещё один пример: - это непонятный совсем пример какой-то :( .data PARAM1dd 12345678h .code mov ax, 8888h - т.е. в AX мы положили 8888h mov word ptr [PARAM1], ax - т.е. из AX мы положили/дописали? 2-ю часть? в [PARAM1] mov ebx, [PARAM1] - т.е. в EBX мы положили [PARAM1] mov ecx, 0 mov edx, 0 mov cx, word ptr [PARAM1+2] - т.е. "из примера выше word ptr=2я часть" > в CX мы ложим 2ю часть от [PARAM1=12345678h] + [PARAM2=????] mov [PARAM1], 089ABCDEFh - в [PARAM1] мы ложим/дописываем/перезаписываем? mov dx, word ptr [PARAM1] - ну а тут что ложится совсем непонятно. После всех манипуляций состояние регистров будет таким: EBX = 12348888 CX = 1234 DX = CDEF
вы слишком усложняете
для начала
PARAM dw 1122h - СЛОВО. порядок хранения обратный. в памяти по возрастанию адресов: 22 11
PARAM1 db 12h - байт
PARAM2 dd 12345678h - двойное слово. порядок хранения слов и байтов внутри слов тоже обратный. в памяти: 78 56 34 12
теперь общий вид mov
mov КУДА, ЧТО
(да и любая инструкция с двумя операндами в dos/win ассемблере под первым понимает цель под вторым - источник. (в линуксе наоборот) )
теперь адресация
PARAM, PARAM1, PARAM2 - символьные ссылки на участки памяти (вместо них можно было бы использовать конкретные адреса)
[PARAM] - понимается по разному в зависимости от второго операнда и типовой приставки
mov al, [PARAM] - считать байт по адресу PARAM в al (al - байтовый регистр)
то же самое можно записать как mov al, byte ptr [PARAM]
так же записывается для слов
mov dx, word ptr [PARAM2] =
mov dx, [PARAM2]
НО при обработке слов учитывается порядок следования байтов
и для двойных слов (опять же - команды учитывают порядок следования байтов)
mov ecx,[PARAM2] =
mov ecx, dword ptr [PARAM2]
внутри адресного оператора можно использовать смещение
byte ptr [PARAM] = 22
byte ptr [PARAM+1] = 11
/////
не стоит привыкать называть части данных "вторая/первая/десятая часть".
двойное слово состоит их младшего и старшего слов
слово из младшего и старшего байтов
для начала
PARAM dw 1122h - СЛОВО. порядок хранения обратный. в памяти по возрастанию адресов: 22 11
PARAM1 db 12h - байт
PARAM2 dd 12345678h - двойное слово. порядок хранения слов и байтов внутри слов тоже обратный. в памяти: 78 56 34 12
теперь общий вид mov
mov КУДА, ЧТО
(да и любая инструкция с двумя операндами в dos/win ассемблере под первым понимает цель под вторым - источник. (в линуксе наоборот) )
теперь адресация
PARAM, PARAM1, PARAM2 - символьные ссылки на участки памяти (вместо них можно было бы использовать конкретные адреса)
[PARAM] - понимается по разному в зависимости от второго операнда и типовой приставки
mov al, [PARAM] - считать байт по адресу PARAM в al (al - байтовый регистр)
то же самое можно записать как mov al, byte ptr [PARAM]
так же записывается для слов
mov dx, word ptr [PARAM2] =
mov dx, [PARAM2]
НО при обработке слов учитывается порядок следования байтов
и для двойных слов (опять же - команды учитывают порядок следования байтов)
mov ecx,[PARAM2] =
mov ecx, dword ptr [PARAM2]
внутри адресного оператора можно использовать смещение
byte ptr [PARAM] = 22
byte ptr [PARAM+1] = 11
/////
не стоит привыкать называть части данных "вторая/первая/десятая часть".
двойное слово состоит их младшего и старшего слов
слово из младшего и старшего байтов
Assembler видео уроки - http://exevideo.net
Похожие вопросы
- Приведите пожалуйста пример программы на ассемблере, использующая API функцию GlobalMemoryStatus. Заранее спасибо.
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)
- С помощью команд fpu вычислить площадь круга, исходя из введѐнного диаметра. Ассемблер...
- Ассемблер сегодня и завтра.
- Помогите написать задание по Ассемблеру (6 пример, задания для примера выше)
- стоит ли изучать ассемблер, если программирую на Делфи? и вообще реально ли что нибудь хорошее, дельное, нужное написать
- Неужели ассемблер действительно проще чем C ?
- Ассемблер - за сколько его реально базово выучить?