Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Калькулятор на ассемблере 
:(
    Опции темы
Serj7
Дата 13.12.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пожалуйста помогите с калькулятором на асме, который исполняет четыре действия + - * /
Желательно что бы работал  в DOS, но если будет рабочий под винду кидайте тоже.  Нужен Turbo: компилю через TASM.
Мне нужен на курсач, а сам я в асме не очень. Мне нужен исходник или если есть закиньте ссылу или 
свой исходник.

В этом исходнике у меня ошибка в 89 строке "illegal number" (я его в нете отрыл)


Код

;ПРИМЕР EXE-ПРОГРАММЫ
;Определение сегмента стека /можно оставлять без изменения/
;Имя сегмента стека - stacksg
ssg segment para stack 'stack'  ;Стандартный заголовок определения стека
dw 32 dup(?)                        ;Задание глубины стека
ssg ends                                ;Конец сегмента стека

;Определение сегмента данных
;Имя сегмента данных - datasg
datasg segment para 'data'          ;Стандартный заголовок определения данных
;Здесь определяются данные
strg db 'Программа запущена',13,10,'$'
wert db 1
zyxel db ?
cp db 1
qwe db 1
ends                                ;Конец сегмента данных

;Сегмент кода - тело программы
codesg segment para 'code'          ;Заголовок сегмента кода
begin proc far                      ;Начало программы - основной процедуры
;-------------------------------------------------------------------------
assume cs:codesg,ds:datasg,ss:ssg ; \
push ds                               ;   \
sub ax,ax                             ; Стандартный заголовок любой
push ax                               ;        EXE - программы
mov ax,datasg                         ;   /
mov ds,ax                             ; /
;-------------------------------------------------------------------------
;Непосредственно ваша программа

 call screen_clear ;Вызов процедуры очистки экрана

 MOV  DH,00    ;Строка 00
 MOV  DL,12    ;Столбец 12
 call curs_pos     ;Вызов процедуры установки курсора
 lea dx,strg       ;\
 mov ah,09         ; |Вывод строки "Программа запущена"
 int 21h           ;/


vsa1: mov wert,01       ;Запись 1 в инкременируемое значение

vsa: in ax,60h         ;\
 cmp al,01h        ; |Опрос клавиатуры. Если Esc, то выйти из программы
 je cikl           ;/

 mov ax,255        ;запись в ах коэффициента
 mov bh,wert       ;запись в bx инкременируемого значения
 div bh            ;деление ах на bx
 mov zyxel, al     ;сохранение переменной, выводимой на порт в память
 mov qwe, al       ;сохранение переменной, выводимой на порт в память
 mov al, 18h       ;\ вычитаем из переменной 18h для вывода на экран
 sub al, qwe       ;/


 MOV  AH,02    ;Запрос на установку курсора
 MOV  BH,00    ;Экран 0
 mov  dh,al   ;Строка al
 MOV  DL,cp    ;Столбец ср
 int 10h       ;Передаём управление в БИОС

 MOV  AH,09        ;Функция вывода на экран
 MOV  AL,'*'       ;Выводимый символ ( звездочка)
 MOV  BH,00        ;Страница 0
 MOV  BL,4ah       ;Установки цвета
 MOV  CX,1         ;Число повторений выводимого символа
 int 10h           ;Передача управления в БИОС

 mov al, zyxel     ;Возвращаем переменную, выводимую на порт из памяти
 mov dx, 0378h     ;Определяем адрес порта
 out dx,al         ;Выводим переменную на порт

 inc wert          ;Инкремент коэффициента
 cmp wert,40h      ;Проверка на конец линии
 je vsa1           ;Если линия закончена перейти на начало программы
 inc cp            ;Инкремент позиции курсора по столбцам
 cmp cp,40h        ;Проверка на конец экрана
 je obn            ;Если достиг конца экрана, то перейти на obn
 jmp vsa           ;Перейти в начало программы
obn:    call screen_clear ;Процедура очистки экрана
 mov cp,01         ;Запись единицы в значения столбцов
 jmp vsa1          ;Переход в начало программы


;--------------------процедура очистки экрана----------------------------
screen_clear proc
        MOV AX,0600h      ;Запрос на очистку экрана
 MOV  BH,10Н   ;Цвет экрана/фон символа (00000000)
 MOV  CX,0000   ;Верхняя левая позиция
 MOV  DX,184FH     ;Нижняя правая позиция
 int 10h
ret
endp
;-------------------------------------------------------------------------
;---------------------процедура установки курсора-------------------------
curs_pos proc
;DX-номер строки и столбца
 MOV  AH,02   ;Запрос на установку курсора
 MOV  BH,00   ;Экран 0
 int 10h      ;Передаём управление в БИОС
ret
endp
;-------------------------------------------------------------------------
CIKL:
;-------------------------------------------------------------------------
ret             ;
begin endp      ;Стандартный конец программы
codesg ends     ;
end begin       ;


Заранее всем хто отзоветса: огромное спасибо!



Это сообщение отредактировал(а) Serj7 - 13.12.2007, 20:32
PM MAIL   Вверх
PPS05
Дата 18.12.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В строке 89 'H' - русское "эн"

MOV  BH,10Н

Это сообщение отредактировал(а) PPS05 - 18.12.2007, 18:07


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

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

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


 




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


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

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