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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2016, 16:19   #1
Milve
Новичок
Джуниор
 
Регистрация: 07.12.2016
Сообщений: 1
Сообщение Нужно сделать задачу (по-могите). Вывести на экран сумму двух введённых с клавиатуры цифр.

Помогите пожалуйста решить данную задачу.
Задание:
1) Вывести на экран сумму двух введённых с клавиатуры цифр (значение вводить так чтобы сумма была меньше 10)
2) Имеется два числа (цифры a и b). Вычислить y=2*a-b+1

Данную задачу нужно сделать по этому материалу:
Практика №1


Постановка задачи

1. Постановка задачи. Написать программу, которая выводит на экран строчку "hello"
2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.
3. Формализация (запись алгоритма). В текстовом редакторе создаём файл (файл "privet.asm) и записываем в него следующий код

1) data segment (описание сегмента данных)
2) mes db 'Hello!$' (строка для вывода на экран. '$' -признак конца строки)
3) data ends (конец сегмента данных)
4)
5) code segment (начало сегмента кода)
6) start: (метка start - начало нашей программы )
7) assume cs:code, ds: data (директива компилятора)
8) mov ax, data (настройка сегментов данных)
9) mov ds, ax
10)
11) mov ah, 9 (функция №9 - вывод строки на экран)
12) lea dx, mes (берём адрес строки)
13) int 21h (вызов прерывания для вывода строки)
14)
15) mov ax, 4c00h (функция завершения программы)
16) int 21h (завершаем программу)
17) code ends (конец сегмента кода)
18) end start (конец программы с точки входа start)
4. Компиляция программы tasm privet.asm
5. Компановка программы tlink privet.obj
6. Запуск privet.exe

Описание программы privet.asm

Строки 1-3 программы privet.asm содержит описание сегмента данных. Сегмент данных - область память, в которой будет храниться данные для наших программ.
Строки 5-17 - это код программы, её исполняемая часть.
В 8 и 9 строках выполняется настройка сегмента данных программы.
Строки 11-13 - вывод строки на экран при помощи функции №9 прерывания 21h
15 и 16 строки - стандартное завершение программы.
После символа ";" пишутся комментарии, они не обрабатываются компилятором.
Переход на новую строку. mes db 'Выводим строку и переходим на новую..', 10, 13, '$'

Лабораторная работа №3
Применение функции DOS и BIOS.


Пример 1: Вывести на экран символ $
mov ah, 02 (номер функции)
mov dl, '$' (входные данные)
int 21h (вызов прерываний)
Пример 2: Очистить экран
mov ah, 0fh (получить параметры видеорежима)
int 10h
mov ah, 00 (установить параметры видеорежима)
int 10h
Пример 3: Установить курсор
mov ah, 02h (функция
mov bh, 00h (видео страница 0)
mov dh, 05h (номер строки 5)
mov dl, 0ch (номер столбца 12)
int 10h (вызов прерываний)
Пример 4: Ввод с клавиатуры и чтение с клавиатуры
mov ah, 1
int 21h
Пример 5: Вывод символов на экран
mov ah, 2
mov dl, dl (поместить символ из ah в dl)
int 21h(10h) (отобразить символ)

Лабораторная работа №4

Линейный алгоритм


Линейным называют такие алгоритмы, в которых все действия выполняются поочередно, друг за другом.
На линейных участках алгоритмов обычно выполняются манипуляции данными
Команда пересылки данных:

mov <приёмник>, <источник>
Команда mov - команда пересылки данных, результатом Ее исполнения является копирование данных из операнда <источник> в операнд <приёмник>
mov ah, 09 (записать в регистр ah число 09)
mov cl, ah (скопировать байт из регистра ah в ch)
mov bx, cx (скопировать слово из регистра cx в регистр bx)
mov ch, 0fh
mov ch, bl
Вопрос: чему будет равно содержимое регистра ch после выполнения данного участка программы?

Простейшие арифметические команды:


Команда | Описание
add <слагаемое 1>, <слагаемое 2> | Записать в операнд <слагаемое 1> значение суммы обоих операндов
inc <операнд> | Увеличить <операнд> на единицу
sub <операнд 1>, <операнд 2> | Записать в операнд <операнд 1> значение разности операндов
dec <операнд> | Уменьшить <операнд> на единицу
mul <сомножитель 2> | Умножает <сомножитель1> на <сомножитель 2> если <сомн2> - байт, то <сомн1> - регистр al (результат-слово в ax); Если <сомн2> - слово, то <сомн1> - регистр ax (результат - двойное слово в dx:ax)
div <делитель> | Делит <делимое> на <делитель> если <делитель> - байт, то <делимое> - регистр ax (результат - частное в al, остаток в ah); если <делитель> - слово, то <делимое> - регистр овая пара dx:ax (результат - частное в ax, остаток в dx)

Пример 1
data segment
N db 4
F db 5
Y db (dw) ?
-------------(тут должен быть код)
start :
----(тут должен быть код)
mov dx, [N]
add dx, 2
sub dx, [F]
------(тут должен быть код)
mov Y, dx
-----(тут должен быть код)
В начале dx загружается значение 4, хранящиеся N затем к нему добавляется константа 2. В результате в dx значение 6. Далее из dx вычитается значение 5 хранящиеся в F, далее из dx результат загружается в Y
Milve вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить сумму его цифр, больших a (значение a вводится с клавиатуры, 0<=a<=8). Anonim123 Паскаль, Turbo Pascal, PascalABC.NET 10 21.05.2014 17:41
Ввод с клавиатуры два целых числа без знака и вывод на экран их сумму. gelya_17 Помощь студентам 5 18.10.2010 10:31
необходимо показать на экран сумму его цифр. Bumer0ng Общие вопросы C/C++ 3 23.08.2010 19:53
Как подсчитать сумму цифр в столбце и вывести их в Edit MaxiMkaUA БД в Delphi 12 30.05.2009 11:04
Подсчитать сумму цифр числа введеного с клавиатуры. Prolog Дурин Помощь студентам 3 10.01.2008 16:29