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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2019, 13:37   #1
Akuxupo
Новичок
Джуниор
 
Регистрация: 12.08.2019
Сообщений: 2
По умолчанию Помогите с функцией вывода символа на экран. Запутался в коде

Добрый день. Прошу вашей помощи. Начал изучать ассемблер. Дошел до задания, где нужно написать программу, которая будет читать 2 числа с клавиатуры, затем их складывать и выводить на экран их сумму.

Вроде бы все должно работать, но я окончательно запутался с тем, как вывести сумму на экран.

Компилирую через nasm, а запускаю в qemu.
Akuxupo вне форума Ответить с цитированием
Старый 12.08.2019, 13:40   #2
Akuxupo
Новичок
Джуниор
 
Регистрация: 12.08.2019
Сообщений: 2
По умолчанию

Код:
bits 16

main:
mov ax, 0
mov ss, ax

mov ax, 06c0h
mov sp, ax

mov ax, 07c0h
mov ds, ax

mov ah, 00h     
mov al, 0Dh
int 10h

Clear_memory:
mov ah, 0
mov [number_1], ah
mov [number_2], ah
mov [Flag_plus], ah

Input:
mov ah, 00h
int 16h

ASCII_to_number:
push ax

Check_number:
cmp al, 0
jae Check_flag
cmp al, '9'
jbe Check_flag

Check_plus:
cmp al, '+'
je Add_flag

Check_equally:
cmp al, '='
je Result
jmp Input

Check_flag:
pop ax
mov al, 1
cmp [Flag_plus], al
je Result_number_2
jmp Result_number_1

Add_flag:
mov al, 1
mov [Flag_plus], al
jmp Input

Result_number_1:
push ax
mov al, number_1
mov bl, 10
mul bl
pop bx
sub bl, '0'
add al, bl
mov [number_1], al
jmp Input

Result_number_2:
push ax
mov al, number_2
mov bl, 10
mul bl
pop bx
sub bl, '0'
add al, bl
mov [number_2], al
jmp Input

Result:
mov al, number_2
add [number_1], al
mov [si], al

push ax
push bx
push cx

Cx_is_1:
mov cx, 1

Div_cx:
xor ax, ax
mov al, number_1
div cx

cmp al, 9
ja Mul_cx_10
call Print

Mul_cx_10:
mov ax, cx
mov bx, 10
mul bx
mov cx, ax
jmp Div_cx

Print:
mov ah, 0Eh

Add_memory:
number_1 db 0
number_2 db 0
Flag_plus db 0

times 510-($-$$) db 0       
dw 0xAA55

_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 12.08.2019 в 19:19.
Akuxupo вне форума Ответить с цитированием
Старый 12.08.2019, 19:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

посмотрите на код вывода регистра AX в этом примере кода
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.08.2019, 04:10   #4
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

Dos
Код:
mov dl,10;'LF'
mov ah,2h
int 21H
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать абстрактный базовый класс Integer с виртуальными арифметическими операциями и функцией вывода на экран. Определить производные классы Decimal (десятичное) и Binary (двоично nastyaapp Помощь студентам 2 07.01.2019 17:57
как написать программу вывода последнего символа? orda23 Общие вопросы C/C++ 16 19.03.2016 16:54
Функции операторов в с++ запутался в коде. Сергей.Ш Общие вопросы C/C++ 11 21.11.2013 12:33
PHP+JavaScript запутался в коде inevitability PHP 0 14.04.2012 16:32
Поиск символа в массиве символов функцией c++ firephenix Помощь студентам 13 20.07.2011 20:49