0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 38

Написать программу сложения двух 32-разрядных двоичных чисел

20.02.2018, 18:25. Показов 3749. Ответов 1
Метки tasm (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый, подскажите почему не могу посмотреть конечный результат(окно закрывается) и почему в конце работы программы выдает "terminated exit code 0". Используется tasm 1.4 for win 7. Все ли правильно и можно ли как-то оптимизировать код?

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
.MODEL  SMALL           ;модель оперативной пам¤ти
.STACK  100h            ;адрес стека
.DATA               ;сегмент данных программы
msg1    db 0dh,0ah, 'Enter A: $'
msg2    db 0dh,0ah, 'Enter B: $'
msg4    db 0dh,0ah, 'Result: $'
 
ten dd 02h
 
_a  dd ?
_b  dd ?
suma    dd ?
 
    .CODE               ;начало сегмента кода
    .386
 
start:
    mov ax,@data
    mov ds,ax           ; загрузка сегментного регистра DS
    mov ah,09h
    mov DX,offset msg1      ;ј адрес выводимого сообщения должен быть в DX
    int 21h         ; вывод сообщения
    mov cx,32           ;разрядность
    call    cgetbin
    mov [_a], eax
    mov ah,09h
    mov DX,offset msg2      ;ј адрес выводимого сообщения должен быть в DX
    int 21h         ; вывод сообщения
    call    cgetbin
;   mov [_b], eax
    add eax, [_a]
    mov [suma], eax
    push    eax
    mov ah,09h
    mov DX,offset msg4      ;ј адрес выводимого сообщения должен быть в DX
    int 21h         ; вывод сообщения
    pop eax
    call    _cputbin
;   pop [suma]
    mov ax,4c00h        ;пересылка 4c00h в регистр ax
    int 21h         ;вызов прерывания с номером 21
    ret
; двоичный вывод EAX на консоль
_cputbin:
;   push    eax
    mov ebx, eax
    mov cx,32
@B: xor al, al
    rcl ebx,1
    adc al, '0'
    int 29h
    loop    @B
    mov al, 'B'
    int 29h
    ret
; ввод с консоли двоичного числа с отработкой удаления символа
; на входе: CX - кол-во цифр
; на выходе: EAX - введенное число или -1, если нажат <ESC>, а также CY=1
cgetbin: pushad
    xor edx, edx
    mov ebp, edx
    mov ebx, ecx
@l:
    call    getch
    or  al,al
    jz  @l
    cmp al, 1Bh         ; <ESC>?
    jz  cancel
    cmp al, 0Dh         ; <Enter>?
    jz  done
    cmp al, 08h         ; <BkSp>?
    jnz @4
    call    rubout
    jmp @l
@4:     cmp al, 30h
    jb  @l
    cmp al, 31h
    ja  @l
    movzx   eax,al          ; убираем из eax лишнее
    shl edx, 1
    bt  ax,0
    adc edx,0
    int 29h
    loop    @l
; выход
done:       mov eax, edx        ;
    or  ebp, ebp
    jz  @5
    neg eax
@5:     clc
    jmp ex
; отмена, взводим Carry(CY), EAX = -1
cancel:;     xor eax, eax
;   dec eax         ; EAX = -1
    stc
ex:     mov ss:[esp+1Ch], eax
    popad
    ret             ;
; ввод символа
getch:      xor     ax, ax
    int 16h
    ret
; нова¤ строка
crlf:       push    ax
    mov ax, 0A0Dh
    int 29h
    xchg    al,ah
    int 29h
    pop ax
    ret
; отработка <BkSp>
rubout:     cmp ebx, ecx    ; первый символ?
    ja  @r          ; нет
    test    ebp,ebp         ; минус вводили?
    jz  @e          ; нет
    dec ebp         ; убираем флаг
    jmp @bs         ; стираем "-" с экрана
@r:     mov eax, edx
    xor edx, edx
    idiv    dword ptr ten       ; делим наше вводимое число на 10.
    mov edx,eax
    inc ecx
@bs:        call    bksp
@e:     ret
; курсор назад на 1 позицию
bksp:       mov ax, 2008h
    int 29h
    xchg    ah,al
    int 29h
    xchg    ah,al
    int 29h
    ret
 
    end start
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2018, 18:25
Ответы с готовыми решениями:

Вычитание двух 32-разрядных двоичных чисел
Добрый день! Понимаю, что задача простейшая, но все же вызывает затруднения. Мне надо написать программу вычитания двух 32-разрядных...

Как написать программу сложения двух целых 16- разрядных чисел?На ассемблере
Как написать программу сложения двух целых 16- разрядных чисел?На ассемблере. Только начал изучать не могу понять как это представляется...

Устройство сложения 4-х разрядных двоичных чисел
Здравствуйте, проблема следующая Необходимо разработать устройство, позволяющее производить сложение четырехразрядных двоичных чисел....

1
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
20.02.2018, 20:45
Цитата Сообщение от ZiBoB4iK Посмотреть сообщение
окно закрывается
добавь ожидание нажатия клавиши перед выходом из программы..
Assembler
1
2
mov ah,1
int 21h
Цитата Сообщение от ZiBoB4iK Посмотреть сообщение
почему в конце работы программы выдает "terminated exit code 0"
значит, все нормально. программа завершила своя работу с кодом возврата ноль. данный код ты указал в регистре al
Цитата Сообщение от ZiBoB4iK Посмотреть сообщение
mov ax,4c00h ;пересылка 4c00h в регистр ax
int 21h ;вызов прерывания с номером 21
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2018, 20:45
Помогаю со студенческими работами здесь

PIC16F84A Вычитание двух 2-х разрядных двоичных чисел
Помогите с кодом для PiC16f84a со следующими функциями: Вычитание двух 2-х разрядных двоичных чисел. Каждое число вводить через порт...

Схема умножение двух 8-ми разрядных двоичных чисел
Здравствуйте, уважаемые форумчане! Есть задача: Построить схему умножения двух 8-ми разрядных двоичных чисел с анализом старших...

PIC16f84A Сложение двух 2-х разрядных двоичных чисел
Помогите с кодом для PiC16f84a со следующими функциями: сложение двух 2-х разрядных двоичных чисел. Каждое число вводить через порт путем...

Реализовать процедуры сложения и умножения двух сто разрядных чисел
Выручайте, совершенно ничего не понимаю в программировании,а в университете поставили данную дисциплину:(

Написать программу умножения двух двоичных вещественных чисел
Доброго времени суток, уважаемые участники форума. Поюзал поиск и не нашёл чего-то похожего (каюсь, может пропустил сам, или тема такая...


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

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

Новые блоги и статьи
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru