Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизПрограммка на ассемблере Найти похожие ветки
← →
asm??? (2004-04-07 11:57) [0]Как написать простую программку на ассемблере, допустим
Вводится число а
Вводится число б
потом они сладываются и выводится результат на экран.
Пожалуйста подскажите, в ассемблере дуб дубом, а надо срочно..
← →
sniknik © (2004-04-07 12:24) [1]срочно научится такому не получится, закажи комунибудь за деньги.
← →
Vlad Oshin © (2004-04-07 12:27) [2]http://subscribe.ru/archive/comp.prog.assembler/2000.html
← →
Digitman © (2004-04-07 12:32) [3]и все это ассемблерное действо, очевидно, должно происходить в опер.системе ХрюНикс)
← →
Rouse_ © (2004-04-07 12:36) [4]А что A := A + B; или Inc(A, B) уже неработает?
Обязательно на Асме?
← →
syte_ser78 © (2004-04-07 12:44) [5]чтото наподобие
mov ah, 1h
int 21h
mov dh, ah
mov ah, 1h
int 21h
add dh, ah
mov ah, 2h
int 21h
← →
syte_ser78 © (2004-04-07 12:46) [6]не, вобщето это кода символов пощитаются
← →
}|{yk © (2004-04-07 13:25) [7]ну так на асме же прикольно писать :) Помню программы на 1 кб получались считающие интегралы разных трансцедентных функций, причем тремя методами. На С такая же програмка занимала 50 Кб
← →
Vitaly © (2004-04-07 13:53) [8]Помню программы на 1 кб получались считающие интегралы разных трансцедентных функций, причем тремя методами. На С такая же програмка занимала 50 Кб
Это почему ж? :)
← →
}|{yk © (2004-04-07 14:01) [9]iostream много жрет. и math
в асме же у меня функция выводящая значение с вершины
стека на экран. А в С я юзал cout которому похрен что выводить
Потому эта универсальность cout оказалась обратно пропорциональна производительности
← →
Мараканец © (2004-04-07 14:18) [10]вроде в с компилером TASM были примеры прям точ в точ что тебе нужно....
а если сам хочешь то тут надо еще писать функцию наподобии IntToStr
← →
wHammer © (2004-04-07 15:00) [11]TASM: В самом простейшем случае примерно так:
; Умножение двух однознаковых чисел введенных с клавиатуры
DOSSEG
.MODEL TINY
.STACK 100h
DATASEG
_A DB 1
_B DB 1
NewStr DB 0Dh,0Ah,"$"
Itogo DB "Total: $"
CODESEG
start:
mov ax,@data
mov ds,ax
echolp:
; Ввод с клавиатуры первого числа
mov ah,1 ; функция DOS ввода с клавиатуры
int 21h ; получить следующую клавишу
sub al,30h ; перевел его из символа в число
push ax ; запоминаем ax (а там наше первое число) в стеке
; Вывод на экран пары перенос строки/возврат каретки
mov dx,offset NewStr
mov ah,09h
int 21h
; Ввод с клавиатуры второго числа
mov ah,1 ; функция DOS ввода с клавиатуры
int 21h ; получить следующую клавишу
sub al,30h ; перевел его из символа в число
mov _B,al ; помещаем р-т в _B
; Вывод на экран пары перенос строки/возврат каретки
mov dx,offset NewStr
mov ah,09h
int 21h
pop ax ; восставливаем ax из стека
mul _B ; перемножаем _A (находится в al) и _B
aam ; получаем десятичный эквивалент числа в ax
or ax,3030h ; получаем символьный эквивалент числа в ax
mov _A,al ; младший знак в _A
mov _B,ah ; старший знак в _B
EchoDn:
; Вывод исходного результата на экран
mov dx,offset Itogo
mov ah,09h
int 21h ; вывести на экран комментарий
mov dl,_B ; поместить символ в DL
mov ah,2 ; функция DOS вывода на экран
int 21h ; вывести на экран символ
mov dl,_A ; поместить символ в DL
mov ah,2 ; функция DOS вывода на экран
int 21h ; вывести на экран символ
; Завершение работы программы
mov ah,4ch ; функция DOS завершения программы
int 21h ; завершить программу
end start
С наилучшими...
← →
Vitaly © (2004-04-07 15:12) [12]> }|{yk © (07.04.04 14:01) [9]
ты бы еще в форму выводил,
а потом жаловался на размер.
← →
}|{yk © (2004-04-07 16:00) [13]а чем прикажешь выводить как не cout???
← →
syte_ser78 © (2004-04-07 16:36) [14]CPRINTF
← →
syte_ser78 © (2004-04-07 16:48) [15]#include <conio.h>
void main()
{
cprintf("1");
}
10 370 байт
#include <stdio.h>
void main()
{
printf("1");
}
8 804 байт
#include <iostream.h>
void main()
{
cout>>"1";
}
23462 байта
← →
syte_ser78 © (2004-04-07 16:51) [16]cout>>"1"; = cout<<"1"; :)
← →
}|{yk © (2004-04-07 17:10) [17]Ню-ню.
А рассчеты где?
разница-то в 10 кб. Рассчеты интеграла заняли остальные 30 кб и не думаю что их можно как-то "оптимизировать". получим не 50 а 40 кб
одного порядка размеры :)
← →
Vitaly © (2004-04-07 17:24) [18]а как ты их на ассемблере-то вычислял?
и чем сложнее на С?
← →
}|{yk © (2004-04-07 18:56) [19]На С это 5 строчек
A степенных функций же на асме нету... и натуральных логарифмов (только двоичные)
← →
asm??? (2004-04-07 22:04) [20]>срочно научится такому не получится, закажи кому нибудь за деньги.
Мне надо было это через час, какой заказ, какие деньги :)))
>А что A := A + B; или Inc(A, B) уже неработает?
Обязательно на Асме?
Обязательно!!!Если бы на делфе, то просто :)))
>syte_ser78 © (07.04.04 12:44) [5]
С символами я и сделал, но если бы я сделал с переменными, тогда получил бы "4", в лучшем случае.. :((
>вроде в с компилером TASM были примеры прям точ в точ что тебе нужно....
Примеров у меня не было, у меня было только: Tasm.exe, TLink.exe, TD.exe и все :((
>wHammer © (07.04.04 15:00) [11]
Уже не надо, но для себя, т.е. для своего внутреннего удовлетворения попробую :)
А вообще я сделал несколько другое, отличное от вопроса:
;*******************FindNumber.asm*****************************;
;****** Program "FindNuber" **********************************;
;****** Нужно просто угадать цифру :)*************************;
;****** 07.04.2004 г.*****************************************;
;**************************************************************;
masm
model small
.stack 100h
.data ;сегмент данных
Message_input db "Введите число от 0 до 9: $"
message_press_enter db 13,10,"Нажмите "ENTER", для выхода",13,10,"$"
message_Ok db 13,10,"Вы угадали, это цифра 4 ",13,10,"$"
message_error_min db 13,10,"Вы не угадали, Ваша цифра меньше загаданной, попробуйте еще раз!",13,10,"$"
message_error_max db 13,10,"Вы не угадали, Ваша цифра больше загаданной, попробуйте еще раз!",13,10,"$"
.code ;сегмент данных
main: ;Вход в программу
mov ax, @data ;@data через регистр ax в
mov ds, ax ;регистр ds
jmp input
input: ;******************************************************;
mov ax, 0 ;Чистим ax
mov dx,offset message_input ;В dx сообщение message_input
mov ah,09h ;Выводим сообщение message_input
int 21h
;******************************************************;
xor ax,ax ;Очищаем ax
mov ah,1h ;Считываем введенную цифру
int 21h
cmp al,"4" ;Сравнивеам введенную цифру с загаданной цифрой - "4"
jl error_min ;Если меньше
jg error_max ;Если больше
je ok ;Если равно, то идем на метку Ок
;jnz error ;error <- это гон :))
error_min: ;***************************************************;
xor ax,ax
mov dx,offset message_error_min ;В dx сообщение message_error_min
mov ah,09h ;Сообщение на экран
int 21h
jmp input ;На метку input, все заново...
error_max: ;***************************************************;
xor ax,ax ;Чистим регистр ax
mov dx,offset message_error_max ;В dx сообщение message_error_max
mov ah,09h ;Выводим сообщение
int 21h
jmp input ;опять вводим сивол.
ok: ;******************************************************;
xor ax,ax ;Очищаем регистр ax
mov dx,offset message_Ok ;В dx сообщение message_ok
mov ah,09h ;Выводим сообщение
int 21h
jmp exit ;Идем на выход
exit: ;******************************************************;
xor ax,ax ;Очищаем ax
mov dx,offset message_press_enter ;В dx сообщение message_press_enter
mov ah,09h ;Выводим сообщение
int 21h
mov ah,01h ;Ждем ввода символа или нажатия Enter
int 21h
mov ax, 4c00h ;Выход
int 21h
;**************************************************************;
end main
З.Ы. Хотя на самом деле даже не знаю, что получил, смотреть не хотел, думал потом в зачетке гляну, а они зачетки для сверки забрали :((, вот сейчас сижу гадаю, толи "3", толи "4", плохо когда не знаешь :( !!!
Ну все равно всем спасибо, но вот если бы чуть, чуть по раньше..... :)
← →
asm??? (2004-04-07 22:10) [21]< .code ;сегмент данных >
сегмент кода, "ошыпся" :))
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.034 c