3 года назад

Учебник по ассемблеру 8086

Может кто кинуть ссылку на хороший учебник по ассемблеру 8086?И да.Как зацикливать один и тот-же код в ассемблере 8086?
Ещё один вопрос.Зацикливание получилось.Но как сделать что-бы оно без нажатия ete зацикливало?
Вот код:og 100hloop statmsg:    db      "Hello, Wold!", 0Dh,0Ah, 24hstat:        mov     dx, msg        mov     ah, 09h        it     21h                mov     ah, 0        it     16h        loop stat ep Нужно нажать ete что-бы ещё раз появился hello,wold
Как-то так:og 100hmov cx, 1msg:    db      "Hello, Wold!", 0Dh,0Ah, 24hstat:       mov     ah, 09h       lea     dx, msg       it     21h             loop stat et
А как сделать цикл бесконечным?
Maelstom спасибо за все ответы!

Fredsons (Гость) Assembler
3

Assembler: Учебник по ассемблеру 8086

8 месяцев назад Ассемблер 8086

А можно-ли надпись hello,wold вывести в случайном месте?То есть по рандомным кординатом.Если можно то как.И можно изменить цвет выводимой буквы?
И да.Можно-ли вывести случайный символ?
А код можно?И почитайте вопрос снова.
А код можно?И почитайте вопрос снова.

Константин21 (Гость) 1 ответ
3
8 месяцев назад Вопрос по ассемблеру. 8086

Для чего в команде процессора используются 3 и 4 байты?disp L, disp H. Подробнее, пожалуйста.
8 и 16 битное смещение в памяти, как я понял?

bRrekABIT (Гость) Нет ответов
3
8 месяцев назад Ищу годный, современный учебник по ассемблеру (очень желательно для Linux)

Посоветуйте хороший и современный учебник по асму. Желательно, чтобы всё начиналось с самых основ.. архитектура ЭВМ подробненько, всякие системы счисления, машинный код чтобы вкратце был затронут.. Мне попадаются только старые учебники, в которых рассматривается создание COM-файлов под DOS и ужасно древние версии ПО, которое необходимо для работы с Ассемблером..И ещё.. мне не нравится возня с виндузятским софтом, особенно всякие Visual Studio и прочая канитель.. если это возможно, то хотелось бы...

XPRINT (Гость) 4 ответа
3
Ответы (4)
VofkaMarkofka (Гость) 3 года назад
8

1. В. Юров "Assembler: учебник". Наиболее просто и понятно изложенный материал на русском языке.
2. Способов несколько. Как самый простой и неоптимальный - использовать команду loop, проинициализировав количество циклов в регистре cx. Другой способ - при помощи условных операторов передачи управления или безусловных - jmp, например. Еще один способ - при помощи макроассемблера, но фактически код скомпилируется в несколько повторяющихся кусков.

Ни один из этих алгоритмов не требует нажатия Enter, это ваш код что-то такое ожидает.

Пожаловаться
n3no (Гость) 3 года назад
2

А вот это зачем?

mov ah, 0
int 16h

И вот это в начале программы не нужно:

loop start

Кстати, для цикла вы забыли добавить инициализацию счетчика: mov cx, количество_циклов

Еще одна ваша ошибка: при загрузке адреса строки при использовании с функцией 9 прерывания 21h нужно использовать команду lea:

mov ah, 09h
lea dx, msg
int 21h

И последнее - вместо введения кода символа 24h каждый раз просто используйте символ $. Это одно и то же. То же самое относится и к символам переноса строки. Их легче запомнить, просто написав 13, 10.

Пожаловаться
Rudeka (Гость) 3 года назад
2

Лучше так:

org 100h

.code

mov cx, 1

start:
mov ah, 09h ; кстати, я не помню, очищает ли эти регистры вызов прерывания 21h, но если нет, то эти две строки
lea dx, msg ; нужно вынести до метки start:
int 21h

loop start
ret

msg db "Hello, World!", 13, 10, "$"

Пожаловаться
sawt (Гость) 3 года назад
9

Бесконечный цикл на ассемблере: (впрочем, сами могли бы додуматься:))

метка:
...код...
jmp метка

Пожаловаться
Учебник по ассемблеру 8086 (Assembler) - вопросы и ответы на все случаи жизни - справочник Assembler moi-vopros.ru