Составить алгоритм и программу занесения в область памяти 2100H-2150H последовательность чисел от 0H до 50H - Assembler

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

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

Задача такова: Составить алгоритм и программу занесения в область памяти 2100H-2150H последовательность чисел от 0H до 50H. Я написал такое:
Assume cs text, ds data
myproc proc
mov AX, Data
mov DS, AX
mov BX, 2100H
mov CX, 50
A1:
mov BYTE PTR(ax), 1h
inc BX
loop A1
mov ax, 4c00b
int 21h
myproc endp
text ends
data segment
data ends
end myproc
Но он ругается на mov ax, 4c00b Может быть что-то исправить? Помогите

Решение задачи: «Составить алгоритм и программу занесения в область памяти 2100H-2150H последовательность чисел от 0H до 50H»

textual
Листинг программы
; masm dos exe #
.286
.model small
.data
x db 50h dup (?)
.code
.386
start:  mov ax,@data
    mov es,ax
    mov di,offset x
    mov cx,50h/4
    mov eax,3020100h
a:  stosd
    add eax,4040404h
    loop a
    mov ah,4Ch
    int 21h
end start

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

В этом коде:

  1. Объявлена переменная x типа db (содержит байтовые значения) в сегменте данных .data.
  2. В сегменте кода .code определена точка входа start.
  3. При запуске программы точка входа start становится активной. Первый же байт кода после точки входа (используем f для перехода к следующему байту) — это команда mov ax,@data, которая устанавливает сегментный регистр ax равным сегменту данных.
  4. Следующая команда mov es,ax устанавливает сегментный регистр es равным сегменту данных.
  5. Команда mov di,offset x устанавливает регистр di равным смещению переменной x от начала сегмента данных.
  6. Команда mov cx,50h/4 устанавливает регистр cx равным 50 (10001110 в двоичном формате), делённому на 4, то есть 12 (10001010 в двоичном формате).
  7. Команда mov eax,3020100h устанавливает регистр eax равным 3020100h (в двоичном формате 00110000 00110010 00000100 00000000).
  8. Выполняется команда stosd, которая записывает в память байт из регистра eax (текущее значение — 00110000) и инкрементирует регистр di на 2 (смещение переменной x в памяти).
  9. К регистру eax добавляется 4040404h (в двоичном формате 00110000 00110010 00000100 00000000), что приводит к новому значению в регистре eax — 3020104h (в двоичном формате 00110000 00110010 00000100 00000001).
  10. Выполняется команда loop a, которая проверяет, равен ли 0 регистр cx. Если равен, то программа возвращается к команде mov cx,50h/4. Если не равен, то выполняется следующая команда.
  11. Команда mov ah,4Ch устанавливает регистр ah равным 4Ch (в двоичном формате 00110000 00110011).
  12. Выполняется команда int 21h, которая передаёт в BIOS запрос на выполнение функции 21h (в данном случае — вывод на экран).
  13. Программа завершается.

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


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

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

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