Непонятки с заполнением регистров - Assembler

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

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

когда нужно внести в bx - 1, программа вносит F4 и так со всеми не могу понять причину
data segment 
  a dw 10
  b dw 1
  c dw 4
 
data ends 
code segment 
assume cs:code, ds:data 
start: 
mov ax,data
mov ds,ax
 
mov bx,b
mov cx,c
add bx,cx
mov ax,bx
xor bx,bx
mov bx,4
div bx
xor bx,bx
mov bx,ax
mov ax,a
mov ax,a 
sal ax,2
sub bx,ax
add bx,2
                            
       quit: 
       mov ax, 4c00h        
       int 21                     
  code ends

Решение задачи: «Непонятки с заполнением регистров»

textual
Листинг программы
a dw 10
  b dw 1
  c dw 4
 ...
mov bx,b;bx=1
mov cx,c;cx=4
add bx,cx;bx=1+4=5
mov ax,bx;ax=5
xor bx,bx;bx=0 для чего обнуляем bх если дальше в ВХ помещаем 4?
mov bx,4;bx=4
div bx;dx:ax/4  А что в dx=? От этого будет зависеть содержимое регистра АХ
xor bx,bx;bx=0 опять для чего обнулили ВХ если дальше в ВХ поместим содержимое АХ?
mov bx,ax;bx=? Что в АХ? Теперь не знаем ЧТО в ВХ
mov ax,a;ax=10
mov ax,a; ax=10 зачем в АХ дважды поместили 10? 
sal ax,2; ax=10*4=40
sub bx,ax; bx=? От неизвестного числа в ВХ отняли 40 Что у нас в ВХ осталось?
add bx,2;bx=?

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

  1. Установка начального значения регистра BX равным 1.
  2. Установка начального значения регистра CX равным 4.
  3. Выполнение операции сложения над регистрами BX и CX, результат сохраняется в BX.
  4. Установка начального значения регистра AX равным значению регистра BX.
  5. Обнуление регистра BX.
  6. Установка начального значения регистра BX равным 4.
  7. Выполнение операции деления над регистрами BX и AX, результат сохраняется в DX:AX.
  8. Обнуление регистра BX.
  9. Установка начального значения регистра BX равным содержимому регистра AX.
  10. Выполнение операции соления над регистром AX на 2, результат сохраняется в AX.
  11. Выполнение операции вычитания над регистрами BX и AX, результат сохраняется в BX.
  12. Выполнение операции сложения над регистрами BX и 2, результат сохраняется в BX.

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


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

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

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