Записать на ассемблере процессоров Intel программу для реализации процедуры:
Подсчет суммы элементов массива
(чтобы компилялось каким нибудь МАСМом или ТАСМом - надо преподу показать ну и кратко обьяснить)
Заранее спасибо!
Другие языки программирования и технологии
Простейшая задачка на Ассемблере
>(чтобы компилялось каким нибудь МАСМом или ТАСМом - надо преподу показать ну и кратко обьяснить)
Каким нибудь таким не умею. Пример на FASM
качай тут
org 100h
mov cx, arsize ;в СХ размер массива
mov si, ar ;в SI начало
@@_next: ;цикл который считает сумму элементов и заодно выводит элементы на экран
call Summ_el ;вызов процедуры которая суммирует элементы
call WriteWordDEC_signed ;вызов процедуры которая выводит на экран элементы массива
mov al,' ' ; вывод пробела
int 29h ; прерывание
LOOP @@_next ;конец цикла
mov dx, summa ;помещаем в ДХ текст для вывода
mov ah,9h ;и выводим
int 21h ;его на экран
mov ax,bx ;в АХ сумму элементов
call WriteWordDEC_signed;и выводим ее на экран
xor ax,ax ;"задержка"
int 16h ;экрана
ret ;возврат управления ОС
Summ_el: ;процедура подсчета суммы
lodsw ;загрузка в акумулятор АХ элемента массива, об этой команде уже узнаешь сам в интернете
add bx,ax ;сложение АХ и ВХ, в ВХ результат
ret ;возвращение управления туда откуда вызвали процедуру
WriteWordDEC: ;вывод числа в 10-ной системе
pusha
mov bx, 10
xor cx, cx
@@1:
xor dx, dx
div bx
push dx
inc cx
or ax, ax
jnz @@1
@@2:
pop ax
add al,'0'
int 29h
LOOP @@2
popa
ret
WriteWordDEC_signed: ;вывод числа со знаком в 10-ной системе
or ax, ax
jns @@_no_sign
push ax
mov al,'-'
int 29h
pop ax
neg ax
@@_no_sign:
call WriteWordDEC
ret
summa db 10,13,'summa: $'
ar dw 1,18,3,-7,5,6,-2,8,-30,10 ;элементы массив
arsize = ($ - ar)/2 ;размер массива
наслаждайся =)
Каким нибудь таким не умею. Пример на FASM
качай тут
org 100h
mov cx, arsize ;в СХ размер массива
mov si, ar ;в SI начало
@@_next: ;цикл который считает сумму элементов и заодно выводит элементы на экран
call Summ_el ;вызов процедуры которая суммирует элементы
call WriteWordDEC_signed ;вызов процедуры которая выводит на экран элементы массива
mov al,' ' ; вывод пробела
int 29h ; прерывание
LOOP @@_next ;конец цикла
mov dx, summa ;помещаем в ДХ текст для вывода
mov ah,9h ;и выводим
int 21h ;его на экран
mov ax,bx ;в АХ сумму элементов
call WriteWordDEC_signed;и выводим ее на экран
xor ax,ax ;"задержка"
int 16h ;экрана
ret ;возврат управления ОС
Summ_el: ;процедура подсчета суммы
lodsw ;загрузка в акумулятор АХ элемента массива, об этой команде уже узнаешь сам в интернете
add bx,ax ;сложение АХ и ВХ, в ВХ результат
ret ;возвращение управления туда откуда вызвали процедуру
WriteWordDEC: ;вывод числа в 10-ной системе
pusha
mov bx, 10
xor cx, cx
@@1:
xor dx, dx
div bx
push dx
inc cx
or ax, ax
jnz @@1
@@2:
pop ax
add al,'0'
int 29h
LOOP @@2
popa
ret
WriteWordDEC_signed: ;вывод числа со знаком в 10-ной системе
or ax, ax
jns @@_no_sign
push ax
mov al,'-'
int 29h
pop ax
neg ax
@@_no_sign:
call WriteWordDEC
ret
summa db 10,13,'summa: $'
ar dw 1,18,3,-7,5,6,-2,8,-30,10 ;элементы массив
arsize = ($ - ar)/2 ;размер массива
наслаждайся =)
ух асемблер, будь он не ладен! Забыл его как страшный сон! Везде в мире низкоуровневым уже C считается а у нас все велосипед изобретают)
А с таким вопросом тебе лучше на cyberforum . ru идти.
А с таким вопросом тебе лучше на cyberforum . ru идти.
Похожие вопросы
- Задачка на ассемблере (DOS BOX)
- Прокомментируйте плиз простейшую программу на ассемблере.
- Проверьте простую задачу на Ассемблере
- решите простую задачку
- Простая задачка для программистов: Как найти самый частый элемент массива?
- помогите с простой задачкой на коде на VBA. НЕ ПАСКАЛЬ!
- Неужели ассемблер действительно проще чем C ?
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Простой вопрос по прыжкам ассемблера