Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2010, 18:11   #1
SickUSP
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 10
По умолчанию Ассемблер вывод результата.

Народ помогите сделать вывод результата программы очень нада я в ассемблере нуб полный...(( буду очень благодарен всем кто поможет..

model tiny
.data
.code
org 100h
main:
; Разделим выражение на 3 подвыражения:
;5684/4
MOV DX,0 ;Для деления используется пара из DX:AX
MOV AX,5684
MOV CX,4 ;В качестве делителя выступает регистр CX
DIV CX ;Делим.
PUSH AX ;Результат сохраним в стеке.
;357/3
MOV DX,0
MOV AX,357
MOV CX,3
DIV CX
PUSH AX
;245/5
MOV DX,0
MOV AX,245
MOV CX,5
DIV CX
; Суммируем результаты подвыражений.
POP DX ; выталкиваем последний результат из стека( в стеке всего 2 результата.
; Последний результат остался в регистре AX.
ADD AX,DX ; суммируем последний результат с предыдущим.
POP DX ; выталкиваем следующий(последний) результат подвыражения
ADD AX,DX ; и суммируем с общей суммой

MOV DX,0
MOV CX,3 ; в качестве множителя выступит CX.
MUL CX ; умножаем
MOV CX,AX ; помещаем результат всех вычислений в CX

end main
SickUSP вне форума Ответить с цитированием
Старый 28.01.2010, 19:04   #2
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

уже огромное количество раз писалось здесь. Вот процедура, выводимое значение на ax
Код:
output proc near
	push cx
;; Проверяем число на знак.
        test    ax, ax
        jns     @oi1

;; Если оно отрицательное, выведем минус и оставим его модуль.
	  push ax
        mov     ah, 02h
        mov     dl, '-'
        int     21h
        pop ax
        neg ax
        
;; Количество цифр будем держать в CX.
@oi1:  
        xor     cx, cx
        mov     bx, 10
@oi2:   
       ;cwd
       xor dx,dx
       div bx
; Делим число на десять. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
        push    dx
        inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
        test    ax, ax
        jnz     @oi2
; Теперь приступим к выводу.
        mov     ah, 02h
@oi3:   pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
        add     dl, 30h
        int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
        loop    @oi3
     	pop cx
	mov dx," "
	mov ah,02h
	int 21h
	ret
endp output
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 28.01.2010, 19:12   #3
SickUSP
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 10
По умолчанию

а то что ты написал нада в проггу сувать?
SickUSP вне форума Ответить с цитированием
Старый 28.01.2010, 19:14   #4
SickUSP
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 10
По умолчанию

всё спс большое за программу очень благодарен
SickUSP вне форума Ответить с цитированием
Старый 28.01.2010, 19:16   #5
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

Поправка, написала
Код:
model tiny
.data
.code
org 100h
main:
; Разделим выражение на 3 подвыражения: 
;5684/4
MOV DX,0 ;Для деления используется пара из DX:AX 
MOV AX,5684
MOV CX,4 ;В качестве делителя выступает регистр CX 
DIV CX ;Делим. 
PUSH AX ;Результат сохраним в стеке.
;357/3
MOV DX,0
MOV AX,357 
MOV CX,3
DIV CX
PUSH AX
;245/5
MOV DX,0
MOV AX,245
MOV CX,5
DIV CX 
; Суммируем результаты подвыражений.
POP DX ; выталкиваем последний результат из стека( в стеке всего 2 результата.
; Последний результат остался в регистре AX.
ADD AX,DX ; суммируем последний результат с предыдущим.
POP DX ; выталкиваем следующий(последний) результат подвыражения
ADD AX,DX ; и суммируем с общей суммой

MOV DX,0 
MOV CX,3 ; в качестве множителя выступит CX.
MUL CX ; умножаем
MOV CX,AX ; помещаем результат всех вычислений в CX
mov ax,cx
;; Проверяем число на знак.
        test    ax, ax
        jns     @oi1

;; Если оно отрицательное, выведем минус и оставим его модуль.
	  push ax
        mov     ah, 02h
        mov     dl, '-'
        int     21h
        pop ax
        neg ax
        
;; Количество цифр будем держать в CX.
@oi1:  
        xor     cx, cx
        mov     bx, 10
@oi2:   
       ;cwd
       xor dx,dx
       div bx
; Делим число на десять. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
        push    dx
        inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
        test    ax, ax
        jnz     @oi2
; Теперь приступим к выводу.
        mov     ah, 02h
@oi3:   pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
        add     dl, 30h
        int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
        loop    @oi3
     	pop cx
	mov dx," "
	mov ah,02h
	int 21h
	ret
end main
весы в центре
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет и вывод результата... sew960i Microsoft Office Excel 18 31.01.2010 14:04
Запрос в БД и вывод результата Nice42ru Помощь студентам 10 05.11.2009 09:47
Поиск и вывод результата на другой лист!!! Ilnour1986 Microsoft Office Excel 12 23.10.2009 11:38
Вывод результата в программу блокнот Печальный цыган Помощь студентам 2 15.06.2009 17:08
Вывод результата по столбцам Mary_star SQL, базы данных 4 03.03.2008 13:15