Другие языки программирования и технологии
Уважаеммые программисты! Вопрос к вам по ассемблеру!
Кто бы мог прокомментировать каждую строчку в программе "вывода 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.
Тут первые два байта - служебные символы перевода строки и установки курсора к ее началу, затем в этой строке будет выведен символ $. Название этой цепочки байтов у нас будет 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.
Похожие вопросы
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)
- физика и программист. вопрос
- Здравствуйте, мне 15 лет, учусь на программиста. Вопрос такой.
- Сложно ли работать программистом? вопрос к тем кто работает, либо учится на программиста.
- Уважаемы Программисты! Вопрос для вас!
- сборщикам и программистам. Вопрос важный, подумайте.
- Хочу стать программистом. Вопрос для уже ставших.
- К программистам. Вопрос внутри.
- уважающий себя программист ...(вопрос внутри)
- нужен совет программиста. (вопрос внутри)