Другие языки программирования и технологии
Помогите написать программу на ассемблере по условию
"Найти произведение отрицательных элементов Массива 1,-2,7,4,-5,-3,1"
.model small
.386
.code
N172940783:
mov dx, @data
mov ds, dx
mov cx, Len
xor ebx, ebx
mov edi, 1
mov si, offset Array
DoLoop:
lodsb
movsx eax, al
test eax, eax
jns Next
sets bl
imul edi
mov edi, eax
Next:
loop DoLoop
mov ah, 9
mov dx, offset Result
int 21h
mov eax, edi
imul ebx
call WriteDec
mov ah, 7
int 21h
mov ah, 4Ch
int 21h
WriteDec:
push dx
test eax, eax
jns NoSign
push eax
mov al, 2Dh
int 29h
pop eax
neg eax
NoSign:
xor edx, edx
mov ebx, 10
div ebx
or dl, 30h
test eax, eax
jz WriteEnd
call WriteDec
WriteEnd:
mov al, dl
int 29h
pop dx
ret
.data
Array db 1, -2, 7, 4, -5, -3, 1
Len equ $ - Array
Result db "Произведение отрицательных элементов = $"
.stack 100h
end N172940783
.386
.code
N172940783:
mov dx, @data
mov ds, dx
mov cx, Len
xor ebx, ebx
mov edi, 1
mov si, offset Array
DoLoop:
lodsb
movsx eax, al
test eax, eax
jns Next
sets bl
imul edi
mov edi, eax
Next:
loop DoLoop
mov ah, 9
mov dx, offset Result
int 21h
mov eax, edi
imul ebx
call WriteDec
mov ah, 7
int 21h
mov ah, 4Ch
int 21h
WriteDec:
push dx
test eax, eax
jns NoSign
push eax
mov al, 2Dh
int 29h
pop eax
neg eax
NoSign:
xor edx, edx
mov ebx, 10
div ebx
or dl, 30h
test eax, eax
jz WriteEnd
call WriteDec
WriteEnd:
mov al, dl
int 29h
pop dx
ret
.data
Array db 1, -2, 7, 4, -5, -3, 1
Len equ $ - Array
Result db "Произведение отрицательных элементов = $"
.stack 100h
end N172940783
В чём проблема? Пробегаешь по массиву, для каждого элемента сверяешь jb 0, и множишь.
Похожие вопросы
- Помогите написать программу на ассемблере, завтра экзамен а я в нём совсем не шарю.
- помогите написать программы в ассемблере
- срочно помогите написать программу на ассемблере вычисляющую R. R=x2+y2, где x=a+b-c, y=b*c-a. a,b,c вводятся с клавы
- Помогите написать программу на Ассемблере
- Люди, которые хоть немного разбираются в ассемблере, помогите написать программу)
- Нужно написать программа на ассемблере для функции СигнумХ . Как правильно это сделать?
- Помогите написать программу со switch в СИ
- помогите написать программу любой игры в ассемблере с блок-схемой. спасибо
- Ассемблер помогите написать программу..
- Помогите с программой на Ассемблере
Инструкция jb проверяет состояние только флага переноса CF, а он при сравнении с нулём не установится никогда.
Для работы со знаковыми числами нужно проверять флаги SF и OF.
А лучше не сравнивать с нулём, а проверять знаковый разряд числа.