Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с выводом ответа. 
:(
    Опции темы
gorom
Дата 17.5.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 28.12.2005

Репутация: нет
Всего: нет



У меня есть код

mov ax,6
mov bx,4
add ax,bx

как мне вывести результат сложения на экран??? 
PM MAIL   Вверх
Akina
Дата 17.5.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Код

; This 3 procedures types the content of AX (SAY_16), AL (SAY_8)
; or lower 4-bit part of AL (SAY_B) on screen in HEX digits.



SAY_16         PROC    NEAR
                PUSH    AX
                PUSH    CX
                PUSH    DX
                XOR     DX,DX
                XCHG    AH,DL
                PUSH    AX
                MOV     AX,DX
                CALL    SAY_8
                POP     AX
                CALL    SAY_8
                POP     DX
                POP     CX
                POP     AX
                RETN
SAY_16         ENDP

SAY_8          PROC    NEAR
                PUSH    AX
                PUSH    CX
                PUSH    DX
                XOR     AH,AH
                MOV     CL,4
                SHL     AX,CL
                SHR     AL,CL
                XOR     DX,DX
                XCHG    AH,DL
                PUSH    AX
                CALL    SAY_B
                POP    DX
                CALL    SAY_B
                POP     DX
                POP     CX
                POP     AX
                RETN
SAY_8          ENDP

SAY_B          PROC    NEAR
                MOV     AH,2
                ADD     DL,30H
                CMP     DL,3AH
                JB      SAY_B_
                ADD     DL,7
SAY_B_:        INT     21H
                RETN
SAY_B          ENDP

Соответственно 
Код

CALL SAY_16

выведет в текущую позицию экрана 000А, что соответствует десятичному 10 и равно результату сложения 6 и 4. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
e-moe
Дата 18.5.2006, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 3.8.2004
Где: Украина, Донецк

Репутация: нет
Всего: 4



А если нужно выводить в 10с/с то дели на 10 до нулевого результата и выводи в обратном порядке остатки от деления... 
PM MAIL WWW ICQ   Вверх
XSInet
Дата 12.6.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



На API можно так:

Код

.data
   Str1  byte  "Ответ: %u",0
   Buf   byte   15 dup (0)
.code
  mov eax, 6
  mov ebx, 4
  add eax, ebx

  push eax
  push offset Str1
  push offset Buf
  call wsprintf

  push 0
  push 0
  push offset Buf
  push 0
  call MessageBoxA
 
PM MAIL   Вверх
setty
Дата 12.6.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 8.6.2006
Где: Украина

Репутация: нет
Всего: нет



2XSInet  в этом случае вывод будит в дексе, а если вывести надо в хэксе то 
Str1  byte  "Ответ: %x",0 
PM MAIL   Вверх
BUGOR
Дата 12.6.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: нет
Всего: 16



Можно так:
Код

.data 
var dw 30h

.code
start:

mov ax,4
mov bx,2
add ax,bx

add var,ax

push 0    
push 0    
push offset var
push 0    
call MessageBoxA

end start
  

Это сообщение отредактировал(а) BUGOR - 12.6.2006, 16:55


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
setty
Дата 12.6.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 8.6.2006
Где: Украина

Репутация: нет
Всего: нет



BUGOR это будит работать только для вывода одного символа и только в случае если сумма небольше 9ти )

вот кпримеру если сделать так:

mov ax,5d
mov bx,8d
add ax,bx     ;ax=13d
add var,ax    ; var=61d -> ASCII - "=" 
PM MAIL   Вверх
XSInet
Дата 12.6.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



to setty.
Цитата

2XSInet  в этом случае вывод будит в дексе, а если вывести надо в хэксе то 
Str1  byte  "Ответ: %x",0  


А разве кто-то просил в хексе ? И зачем ты мне это говришь, - не я спрашивал... 
PM MAIL   Вверх
BUGOR
Дата 12.6.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: нет
Всего: 16



setty, эта проблема решается довольно просто в цикле, в любом случае считаю прибавление койффицента 30h к каждой фицре более рациональным решением, чем вызов тормозной wsprintfa:)

Добавлено @ 19:47 
PS Стояла задача вывести результат сложения 4+2, моё решение справляется с условия поставленной задачи, поэтому не надо всё усложнятьsmile 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
setty
Дата 12.6.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 8.6.2006
Где: Украина

Репутация: нет
Всего: нет



да я знаю писал както свю функцию для этих целей сонована на той идее что ты предложил

однако вариант с использованием wsprintfa показался мне более симпатичным и я знаю один лиш недостаток - отсутствие явно заданного размера строки что может приводить к переполнениям буфера

есть ли еще какието причины не использовать wsprintf? 
PM MAIL   Вверх
setty
Дата 12.6.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 8.6.2006
Где: Украина

Репутация: нет
Всего: нет



кстате можно воспользоватся процедурами dw2hex & dw2ah из masm32.lib этих же целей 
PM MAIL   Вверх
BUGOR
Дата 13.6.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: нет
Всего: 16



setty, есть ещё одна причина: wsprintf самая тормозная функция из всех, что я встречал. В циклах её вообще никогда не использую, есть более красивые решения. 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
setty
Дата 13.6.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 8.6.2006
Где: Украина

Репутация: нет
Всего: нет



так ты про скорость выпонения? 
PM MAIL   Вверх
ds29
Дата 15.6.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 15.3.2006

Репутация: 1
Всего: 2



лучше использовать свою функцию (или не свою но открытый код) чем вызывать  wsprintf из DLL 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.