С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
hallmax
3 / 3 / 0
Регистрация: 14.11.2012
Сообщений: 101
1

[FASM] Напишите программу для вычисления формулы "Сложение и вычитание с переносом"

19.01.2018, 19:54. Просмотров 287. Ответов 4
Метки нет (Все метки)

где a,b,c – целые трехбайтные числа без знака.
k=a+b-(1-c)

пример:
требуется вычислить значение формулы k=i+j-n+1, где переменные k, i, j и n являются 32-битными целыми числами без знака. Складывать и вычитать такие числа придётся в два этапа: сначала вычисления будут производиться с младшими словами операндов, а затем со старшими с учётом переноса.
Для прибавления единицы в данном примере нельзя использовать команду INC, так как она не влияет на флаг CF и мы можем получить ошибку в результате!
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use16                 ;Генерировать 16-битный код
org 100h              ;Программа начинается с адреса 100h
 
    mov ax,word[i]    ;Загружаем младшую часть i в AX
    mov bx,word[i+2]  ;Загружаем старшую часть i в BX
 
    add ax,word[j]    ;Складываем младшие части i и j
    adc bx,word[j+2]  ;Складываем старшие части i и j
 
    sub ax,word[n]
    sbb bx,word[n+2]  ;BX:AX = i+j-n
 
    add ax,1          ;Команда INC здесь не подходит!
    adc bx,0          ;BX:AX = i+j-n+1
 
    mov word[k],ax    ;\
    mov word[k+2],bx  ;/ Сохраняем результат в k
 
    mov ax,4C00h      ;\
    int 21h           ;/ Завершение программы
;-------------------------------------------------------
i dd 120000
j dd  80500
n dd   2300
k dd      ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2018, 19:54
Ответы с готовыми решениями:

[FASM] Напишите программу для вычисления формулы "Сложение и вычитание"
Напишите программу для вычисления формулы. Все числа 16-битные целые со знаком....

[FASM] Напишите программу для вычисления формулы "Умножение и деление"
Напишите программу для вычисления формулы. Числа целые со знаком 16-битные....

Напишите пожалуйста программу для вычисления формулы
k=m-1+n-(n-m+r)

Структура "многочлен". Реализовать сложение, вычитание и умножение многочленов
Многочлены степени n задаются своими коэффициентами, каждый из которых записан...

Напишите программу для вычисления формулы. Все числа 16-битные целые со знаком
Напишите программу для вычисления формулы. Все числа 16-битные целые со знаком....

4
Jin X
4636 / 1391 / 162
Регистрация: 14.12.2014
Сообщений: 2,687
Записей в блоге: 8
Завершенные тесты: 2
19.01.2018, 20:32 2
В чём вопрос?
0
hallmax
3 / 3 / 0
Регистрация: 14.11.2012
Сообщений: 101
19.01.2018, 20:41  [ТС] 3
Написать программу для k=a+b-(1-c) по примеру
0
Jin X
4636 / 1391 / 162
Регистрация: 14.12.2014
Сообщений: 2,687
Записей в блоге: 8
Завершенные тесты: 2
19.01.2018, 23:04 4
Ааааааа
Всё то же самое, только меняйте i на a, j на b и n на c.
Ну и c надо будет не вычитать, а прибавлять, а 1 наоборот вычитать.
0
ФедосеевПавел
Модератор
3860 / 2180 / 895
Регистрация: 01.02.2015
Сообщений: 7,263
19.01.2018, 23:50 5
Я подождал, в надежде, что через 10 лет ТС не будет говорить "Мы в ВУЗе учили ассемблер - всякие fasm, word, mov..."
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use16                 ;Генерировать 16-битный код
org 100h              ;Программа начинается с адреса 100h
 
    mov ax,word[a]    ;Загружаем младшую часть a в AX
    mov bx,word[a+2]  ;Загружаем старшую часть a в BX
 
    add ax,word[b]    ;Складываем младшие части a и b
    adc bx,word[b+2]  ;Складываем старшие части a и b
 
    mov cx,1
    mov dx,0
    sub cx,word[c]
    sbb dx,word[c+2]  ;DX:CX = 1-c
 
    sub ax,cx
    sbb bx,dx
 
    mov word[k],ax    ;\
    mov word[k+2],bx  ;/ Сохраняем результат в k
 
    mov ax,4C00h      ;\
    int 21h           ;/ Завершение программы
;-------------------------------------------------------
a dd 120000
b dd  80500
c dd   2300
k dd      ?
1
19.01.2018, 23:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2018, 23:50

Напишите программу для подсчёта суммы (не количества!) мест, на которых во введенной строке стоит буква "б"
помогите пожалуйста с 2-мя программами (по возможности TASM)! Заранее спасибо ...

Напишите программу для вычисления формулы Все числа со знаком, a — байт, b, с — слово, k — двойное слово
Напишите программу для вычисления формулы Все числа со знаком, a — байт, b, с —...

Пример "шапки" и сегментации EXE программы под DOS для FASM
...доброго времени суток, уважаемые форумчане!... возник вопрос: где можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru