Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

В массиве из n = 10 элементов найти произведение чисел, которые больше a = 5. Написать ввод и вывод.

80K
26 января 2013 года
GLEBOCHEK
3 / / 14.05.2012
Код программы без ввода и вывода.
Код:
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
326
17 февраля 2013 года
sadovoya
757 / / 19.11.2005
Возможно с выводом чисел поможет разобраться код (обратите внимание на место после комментария ";вывести результат суммировакния как символ:". Еще недавно в форуме обсуждалась тема чисел, забыл где.

Код:
;---------- работа с сопроцессором -------------
;с целыми лучше работать без сопроцессора

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
326
17 февраля 2013 года
sadovoya
757 / / 19.11.2005
Вот нашел упоминаемый топик: см. здесь
326
17 февраля 2013 года
sadovoya
757 / / 19.11.2005
Код приведенный мной надо исправить так:
Код:
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
7
17 февраля 2013 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: sadovoya
fist dword ptr sum

Не сразу сообразил, что это — не кулак :D Вот что значит давно с асмом не виделся…

326
18 февраля 2013 года
sadovoya
757 / / 19.11.2005
Цитата: @pixo $oft
Цитата: sadovoya
fist dword ptr sum

Не сразу сообразил, что это — не кулак :D Вот что значит давно с асмом не виделся…


Кулак -- это еще что: там еще popa есть :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог