Синтаксис и выполнение команд - Assembler
Формулировка задачи:
Интересует в частности по FASM
Учитывая, что почти вся литература написана под MASM, самый крутой вопрос:
Индексы обращения к массиву, в подобной манере, не приемлемы, чертовски нужный нюанс.
Цепочечные команды: CMPS, LODS, MOVS, SCAS, STOS (B/W/D), особенно в связке с REP, не совсем ясно как выполняются, литература только запутала.
Ввод и вывод на консоль:
Наблюдал, что есть макросредства из С для ввода и вывода (printf/scanf), как их подключить и использовать в ассемблере?
Есть ли другие способы вводить и выводить текст на консоль?
mov si, 2 mov ax, mas[si]
error: extra characters on line.
Решение задачи: «Синтаксис и выполнение команд»
textual
Листинг программы
use16 org 100h mov si,mass0 cld movs al,[si] ;в al окажется 1 movsb ;в al окажется 2 sub si,mass0 ;вычтем из si адрес начала массива для большей наглядности примера mov al,[mass0+si] ;в al окажется 3 ret ;мы окажемся там, откуда пришли mass0 db 1,2,3,4,5
Объяснение кода листинга программы
- Переменная mass0 содержит байты
1, 2, 3, 4, 5
- Команда use16 указывает на то, что дальнейший код будет использовать 16-битный режим работы
- Команда org 100h устанавливает базовый адрес для сегмента данных на 100h
- Команда mov si,mass0 загружает в регистр si адрес переменной mass0
- Команда cld устанавливает направление переходов в регистре si на прямую (вперед)
- Команда movs al,[si] загружает в регистр al значение байта по адресу, который содержится в регистре si
- Команда movsb выполняет загрузку значения байта в регистр al и инкрементирует регистр si на 1
- Команда sub si,mass0 вычитает из значения регистра si адрес начала массива, чтобы смещение от начала массива было положительным
- Команда mov al,[mass0+si] загружает в регистр al значение байта по смещению от начала массива, которое содержит регистр si
- Команда ret завершает выполнение кода и возвращает управление туда, откуда оно пришло
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д