2013-09-26 2 views
-5

Я делаю сборку x86 в debug.exe для моего курса, однако, похоже, я полностью не понимаю основ. У меня есть эта программа сборки (написанная преподавателем), и я должен ее изменить, поэтому вместо ввода ввода и печати он будет делать что-то с ним, а затем печатать. Я понятия не имею, где же прочитать конец и печать начала и действительно оценить некоторые советы о том, куда вставить свой код и что каждая строка сделатьПервая программа сборки

a100 
mov dx, 200 
mov ah, 0a 
int 21 
mov bh, 00 
mov bl, byte ptr[201] 
mov byte ptr[200], 0d 
mov byte ptr[201], 0a 
mov byte ptr[202 + bx], 24 
mov dx, 200 
mov ah, 09 
int 21 
mov ah, 4c 
int 21 

a200 
db 07 00 '***********' 

n progr1.com 
r cx 
100 
w 
q 
+0

http://static.patater.com/gbaguy/x86asm.htm – Tony

+1

Здесь вы: [Прерывание 21h ссылка] (http://www.ctyme.com/intr/int-21.htm) – Michael

ответ

1

я бы, возможно, начать читать о каждом из этих строк один за другим время и просто посмотреть, что они делают.

Например, как говорится в комментариях, прочитайте о том, что делает int 21, он делает много вещей, в зависимости от того, что находится в регистре AH.

http://www.ctyme.com/intr/int-21.htm

например, Чтение строки из STDIN задается 0A в регистре AH, оно помещает вывод в регистр DX в определенном формате.

mov dx, 200 
mov ah, 0a 
int 21 

Количество прочитанных символов помещается во вторых байтах DX, и поэтому сохраняются в BX, используя следующие строки:

mov bh, 00 
mov bl, byte ptr[201] 

Печать на экран осуществляются с другим INT 21AH значения , 09, и это читается везде, где DX указывает на, поэтому DX устанавливается обратно в 200

mov dx, 200 
mov ah, 09 
int 21 

Я оставлю это вам, чтобы выяснить, что делает остальное, но посмотрите на формат чтения и записи здесь http://www.ctyme.com/intr/rb-2563.htm. Например, эта строка mov byte ptr[202 + bx], 24 помещает ASCII 0x24 в последнюю позицию в строке, поскольку это символ завершения для чтения.

+0

Спасибо , это было большой помощью. Я сделал свою программу, она работает, но я не понимаю, почему она по-прежнему работает после удаления a200 db 07 00 '***********' – user2796400

Смежные вопросы