Ошибка в коде: Заполнить массив тридцатью нулями. (Использовать команду stos) - Assembler
Формулировка задачи:
Здравствуйте, помогите пожалуйста. У меня в коде скорее всего есть ошибка, не могу найти ее.
Задание: Заполнить массив тридцатью нулями. (Использовать команду stos). И вывести массив на экран.
Код представлен ниже:
При проверке в дебаггере, программа ничего не выводит. Мне кажется, что ошибка будет в строках 10-14.
Спасибо за помощь.
.model small .data mas dw 30 dup(?) ; инициализация массива тридцатью элементами .stack 100h ; задание размера стека 256 байт .code begin: mov ax,@data mov ds,ax mov di,offset mas ; в индекс приемника заносится смещение первого элемента массива mov cx,30 ; счетчик равен 30 mov ax,0 ; значение, которым инициализируется массив cld ; сброс флага направления (df) в 0 rep stosw ; сохранение элементов строки mov si,0 mov cx,30 L1: push cx mov ax,mas[si] xor cx,cx mov bx,10 oi2: xor dx,dx div bx push dx inc cx test ax,ax jnz oi2 mov ah,02h oi3: pop dx add dl,'0' int 21h loop oi3 add si,type mas pop cx loop L1 mov ah,4ch int 21h ; выход из программы end begin
Решение задачи: «Ошибка в коде: Заполнить массив тридцатью нулями. (Использовать команду stos)»
textual
Листинг программы
.model small .data mas dw 30 dup(?) ; инициализация массива тридцатью элементами message1 db "Array of 30 elements: $" ; инициализация строки new_line db 10,13,'$' ; строка перевода на новую строку .stack 100h ; задание размера стека 256 байт .code begin: mov ax,@data mov ds,ax mov es,ax mov di,offset mas ; в индекс приемника заносится смещение первого элемента массива mov cx,30 ; счетчик равен 30 mov ax,0 ; значение, которым инициализируется массив cld ; сброс флага напрвления (df) в 0 rep stosw ; сохранение элементов строки mov si,0 mov cx,30 mov dx,offset message1 mov ah,9 int 21h ; вывод строки message1 mov dx,offset new_line mov ah,09h int 21h ; переход на новую строку L1: push cx mov ax,mas[si] xor cx,cx mov bx,10 oi2: xor dx,dx div bx push dx inc cx test ax,ax jnz oi2 mov ah,02h oi3: pop dx add dl,'0' int 21h ; вывод вектора из 30 нулей loop oi3 add si,type mas pop cx loop L1 mov ah,4ch int 21h ; выход из программы end begin
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д