Для чего мы толкаем в стек второй раз содержимое регистра АХ? - Assembler

Узнай цену своей работы

Формулировка задачи:

народ добрый день. помогите пожайлуста понять, изучаю ассемблер по калашникову, там дан один пример
cseg segment
assume cs:cseg, ds cseg, es:cseg, ss:cseg
org 100h
Begin:
 call wait_key
 cmp al,27
 je Quit_prog
 cmp al,0
 je Begin
 
 call Out_char
 jmp Begin
 
 Quit_prog:
  mov al,32
  call Out_char
  int 20h
 
 Wait_key proc
  mov ah,10h
  int 16h
  ret
 Wait_key endp
 
 Out_char proc
  push cx
 [B] push ax[/B]
  push es
 
  [B]push ax[/B]
  mov ax,0B800h
  mov es,ax
  mov di,0
  mov cx,2000
  pop ax
  mov ah,31
 
 Next_sym:
  mov es:[di],ax
  inc di
  inc di
  looop Next_sym
 
  pop es
  pop ax
  pop cx
 Out_char endp
 
cseg ends
end Begin
подскажите, там где выделено жирным шрифтом, для чего мы толкаем в стек второй раз содержимое регистра АХ? я понял это так, что в АХ хранится код нажатой клавиши, мы "сохраняем" содержимое АХ в вместе с другими регистрами, потом повторно закладываем содержимое регистра АХ в стек для того чтобы взять его в дальнейшем. добавить атрибут символа и вывести на экран, но разве не проще было бы просто заложить АХ в стек последним провести с ним действия до 21 прерывания и потом вернутся? заранне спасибо. прошу сильно не материть меня я недавно начал читать

Решение задачи: «Для чего мы толкаем в стек второй раз содержимое регистра АХ?»

textual
Листинг программы
 mov bx,0B800h
 mov es,bx
 mov di,0
 mov cx,2000

Объяснение кода листинга программы

  1. «mov bx,0B800h» — в данном коде это означает, что значение переменной BX устанавливается равным 0B800h.
  2. «mov es,bx» — это означает, что значение регистра ES устанавливается равным значению переменной BX.
  3. «mov di,0» — это означает, что значение переменной DI устанавливается равным 0.
  4. «mov cx,2000» — это означает, что значение переменной CX устанавливается равным 2000. Данный код, вероятно, используется для работы с сегментными регистрами и начальной адресацией в памяти. Он устанавливает начальный адрес сегмента в BX, затем передает его в регистр ES. Затем он устанавливает начальное значение индекса в DI, и начальное значение счетчика в CX.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы