2013-09-18 5 views
-1

Я заинтересован в изучении сборки (x86) и сделал свою первую программу приветствия. Я использовал отладчик в windows-xp, и мне интересно, может ли кто-нибудь объяснить, что делает каждая строка.Описание сборки hello world

1) jmp 115 
2) db 'Hello world!$' 
3) -a 115 
4) mov ah, 09 
5) mov dx, 102 
6) int 21 
7) int 20 

Я приложил screenshoot о каждом шаге, чтобы сделать исполняемый файл в сборке,

enter image description here

ответ

4

Я рекомендую вам прочитать Intel's Software Developer's Manual (особенно объем 2), и/или некоторые x86 сборки учебник (как The Art of Assembly

Структура кода:.

1) jmp 115 

Переход к команде mov ah,09, так что процессор не пытается выполнить строку «Hello world», как если бы это был код (CPU не может отличить код и данные).


2) db 'Hello world!$' 

Объявляет строку. Знак доллара используется в качестве ограничителя строк некоторыми функциями прерывания DOS.


3) -a 115 

Сообщает debug собрать последующий код, начиная с адреса 115.


4) mov ah, 09 

помещает значение 9 в регистре ah.


5) mov dx, 102 

Переводит адрес строки в 'привет мир' в регистре dx


6) int 21 

Выполняет прерывание 21h/функции 9 (write string). Номер функции ожидается в регистре ah и смещении строки в регистре dx, о котором позаботились предыдущие две инструкции.


7) int 20 

Выступает прерывания 20h (terminate program)

+0

Я хотел бы добавить, что значения, которые входят в '' ah' и dx' предписаны документацией услуг, предоставляемых операционной системой DOS. Вам придется искать их, чтобы использовать их. 'int 21' и' int 20' похожи на вызовы функций этим службам. См. Список прерываний Ральфа Брауна (http://www.ctyme.com/rbrown.htm). –

+0

МНОГО СПАСИБО !!!!!!!!!!!!!!!! –