Прога в ассемблере( - Assembler

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

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

Приветствую, имеется задание к лаб. работе и звучит оно следующим образом - все отрицательные числа превратить в "0". Имеется следующее: _________________________
data segment
mass dw 1,1,1,1,1,-1,-1,-1,-1,-1
data ends
code segment
assume cs: code, ds:data
start:mov ax, data
mov ds,ax
lea bx, mass
mov cx,10
beg: cmp byte [mass],0
jl no
mov byte ptr ax, [bx]
no: inc bx
inc bx
loop beg
quit: mov ax, 4c00h
int 21h
code ends
end start
____________________ Что в данной программе не так?((

Решение задачи: «Прога в ассемблере(»

textual
Листинг программы
data segment
mass dw 1,1,1,1,1,-1,-1,-1,-1,-1
data ends
 
code segment
assume cs: code, ds:data
start:
mov ax, data
mov ds,ax
lea bx, mass
mov cx,10
beg: 
cmp word ptr [bx],0
jnl no
mov word ptr [bx],0
no: 
add  bx,2
loop beg
quit: 
mov ax, 4c00h
int 21h
code ends
end start

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

  1. Присваиваем сегмент данных переменной ax (mov ax, data).
  2. Присваиваем сегмент данных переменной ds (mov ds,ax).
  3. Легко запоминаемая точка начала (lea bx, mass).
  4. Считаем, сколько элементов мы хотим обработать (mov cx,10).
  5. Запускаем цикл, который будет выполняться 10 раз (beg:).
  6. Проверяем значение в памяти по адресу, который хранится в bx (cmp word ptr [bx],0).
  7. Если значение равно нулю, то записываем в память по этому адресу единицу (mov word ptr [bx],0).
  8. Если значение не равно нулю, то мы его пропускаем и переходим к следующей итерации (jnl no).
  9. Увеличиваем значение bx на 2 (add bx,2).
  10. В конце цикла мы выходим из него (loop beg).
  11. Завершаем работу программы (quit:).
  12. Выводим в дам память значение 4c00h (mov ax, 4c00h).
  13. Вызываем обработчик прерывания 21h (int 21h).
  14. Конец кода (code ends).
  15. Точка входа в программу (end start).

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


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

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

11   голосов , оценка 4.182 из 5