Другие языки программирования и технологии

Уважаеммые программисты! Вопрос к вам по ассемблеру!

Кто бы мог прокомментировать каждую строчку в программе "вывода ASCII символов на экран". Для общего понимания хотелось бы почитать комменты! .MODEL small .STACK 100h .DATA refresh db 0Dh, 0Ah, '$' .CODE main: mov ax, @data mov ds, ax xor dx, dx mov cx, 16 printSTR: push cx mov cx, 16 printSIM: inc dl mov ah, 02h int 21h loop printSIM pop cx push dx mov dx, offset refresh mov ah, 09h int 21h pop dx loop printSTR mov ah, 4ch int 21h end main end очень интересует строка : .DATA refresh db 0Dh, 0Ah, '$' и mov ah, 4ch СПАСИБО!!! Программа компилируется и работает нормально.
refresh db 0Dh, 0Ah, '$' - в память заносим 2 байта со значениями в шестнадцатеричной системе 0D, 0A и третий байт с кодом знака $
Тут первые два байта - служебные символы перевода строки и установки курсора к ее началу, затем в этой строке будет выведен символ $. Название этой цепочки байтов у нас будет refresh, это просто выбранное нами произвольно имя. Но пока что это еще не выполняемые команды, а только последовательность символов в памяти для будущего их вывода с помощью функции DOS с номером 9 (номер задается строкой mov ah, 09h, помещающей в регистр AH значение 9 ), вызываемой прерыванием int 21h (дальше в программе, перед вызовом функции в регистр DX заносится относительный адрес (offset) этого блока данных в памяти) , функция DOS возьмет его оттуда сама. А служебные символы 0D и 0A будут интерпретированы ею как соответствующие команды, а символ $ просто выведен на экран. Между прочим, функция DOS тоже будет все это делать не сама, а обратится к соответствующим функциям BIOS.
А .DATA означает, что эти данные будут размещены в сегменте памяти, отведенном для данных и адресуемом через сегментный регистр DS (Data Segment).

mov ah, 4ch - занесение в регистр процессора AH значения 4с в шестнадцатеричной системе. Это значение будет интерпретироваться при последующем вызове функции DOS командой int 21h как номер функции, которую надо выполнить. Функция с номером 4ch - это завершение выполнения программы и передача управления обратно командному процессору DOS.
АА
Аман Акбаев
91 224
Лучший ответ