sseg segment stack 'stack'
dw 100 dup(?)
sseg ends
;----------------------------------
dseg segment 'data'
a db 1,2,3,4,5,6,7,8,9,10
n dw 10
p db ?
dseg ends
;----------------------------------
cseg segment 'code'
assume cs:cseg, ds:dseg, ss:sseg
start proc far
mov ax,dseg
mov ds,ax
mov ax,0
mov si,0
mov cx,n
m1: cmp a[si],5
jnl m2
inc si
cmp si,n
je m3
loop m1
m2: sub al,a[si]
inc si
cmp si,n
je m3
loop m1
m3: mov p,al
RET
start endp
cseg ends
end start
В массиве из n = 10 элементов найти произведение чисел, которые больше a = 5. Написать ввод и вывод.
Код программы без ввода и вывода.
Код:
;---------- работа с сопроцессором -------------
;с целыми лучше работать без сопроцессора
code segment
assume cs:code, ds:code
org 100h
begin:
jmp short beg
array dw 1,2,3,4,5,6,7,8,9,10,11,12,13
sum dw ?
beg:
mov cx,13
finit ;инициализация сопроцессора
fldz
xor si,si
more:
fiadd dword ptr array[si]
add si,2
loop more
fist dword ptr sum
wait
;вывести результат суммировакния как символ
mov ah,2
mov dl,byte ptr sum
int 21h
ret
code ends
end begin
;с целыми лучше работать без сопроцессора
code segment
assume cs:code, ds:code
org 100h
begin:
jmp short beg
array dw 1,2,3,4,5,6,7,8,9,10,11,12,13
sum dw ?
beg:
mov cx,13
finit ;инициализация сопроцессора
fldz
xor si,si
more:
fiadd dword ptr array[si]
add si,2
loop more
fist dword ptr sum
wait
;вывести результат суммировакния как символ
mov ah,2
mov dl,byte ptr sum
int 21h
ret
code ends
end begin
Вот нашел упоминаемый топик:
Код:
code segment
assume cs:code, ds:code
org 100h
begin:
jmp short beg
array dw 1,2,6 ; сумма должна быть из одной цифры
sum dw ?
beg:
mov cx,3
finit
fldz
xor si,si
more:
fiadd dword ptr array[si]
add si,2
loop more
fist dword ptr sum
wait
mov ah,2
mov dl, byte ptr sum
add dl, '0' ; из цифры в символ
int 21h
ret
code ends
end begin
assume cs:code, ds:code
org 100h
begin:
jmp short beg
array dw 1,2,6 ; сумма должна быть из одной цифры
sum dw ?
beg:
mov cx,3
finit
fldz
xor si,si
more:
fiadd dword ptr array[si]
add si,2
loop more
fist dword ptr sum
wait
mov ah,2
mov dl, byte ptr sum
add dl, '0' ; из цифры в символ
int 21h
ret
code ends
end begin
Цитата: sadovoya
fist dword ptr sum
Не сразу сообразил, что это — не кулак :D Вот что значит давно с асмом не виделся…
Цитата: @pixo $oft
Цитата: sadovoya
fist dword ptr sum
Не сразу сообразил, что это — не кулак :D Вот что значит давно с асмом не виделся…
Кулак -- это еще что: там еще popa есть :)