Консультация № 136461
12.05.2008, 13:43
50.00 руб.
0 2 1
Добрый день! Срочно нужна программа на ассемблере, и если возможно, с комментариями.
Текст задания:
Дано описание X dw 50 dup (?) ; массив чисел со знаком

Написать программу на языке Assembler, заменяющую нулевые элементы массива

на их порядковые номера в массиве с использованием цепочечных команд.

Обсуждение

Неизвестный
12.05.2008, 16:05
общий
это ответ
Здравствуйте, Александр Бойцов!
По адресу <a href=http://rusfaq.ru/upload/650>http://rusfaq.ru/upload/650</a> можно скачать исходный код решения Вашей задачи (на всякий случай код и в приложении)
Получить нужно СОМ-файл
---
Если что не понятно будет, спросите в минифоруме

Приложение:
; Title NEW.model tiny.386.codeorg 100hstart: mov ax, 3 int 10h lea dx, msgInit mov ah,9 int 21h lea si, X cld mov cx, X_len@@next: lodsw CALL showDEC LOOP @@next lea dx, msgFinal mov ah, 9 int 21h lea di, X@@go: mov cx, X_len xor ax, ax REPNE scasw jne @@done push di dec di dec di mov ax, di lea bx, X sub ax, bx shr ax, 1 inc ax ; счет с 1, иначе зацикливание при первом = 0 stosw pop di LOOP @@go @@done: lea si, X mov cx, X_len@@9: lodsw CALL showDec LOOP @@9 lea dx, msgPress mov ah, 9 int 21h xor ax, ax int 16hint 20h; Вывод числа в AX в десятичномshowDEC procpush axpush bxpush cxpush dx xor cx, cx mov bx, 10@@1: xor dx, dx div bx push dx inc cx or ax, ax jnz @@1 mov bx, cxmov cx, 8sub cx, bx@@spaces: mov al, ‘ ‘ int 29hLOOP @@spaces mov cx, bx @@2: pop ax add al, ‘0‘ int 29h LOOP @@2 pop dxpop cxpop bxpop ax retshowDEC endp msgInit db ‘Исходный массив:‘,13,10,‘$‘msgFinal db 13,10,‘Массив после преобразования‘,13,10,‘$‘msgPress db 13,10,‘Нажмите любую клавишу ...$‘x_len equ 50X dw x_len dup (?)end start
Неизвестный
12.05.2008, 23:21
общий
Возможно ли это уместить строк в 15, так, чтобы просто в дебаггере посмотреть что же там именно происходит, цепочечные команды для меня вообще темный лес...
Форма ответа