Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
8 / 7 / 3
Регистрация: 03.01.2009
Сообщений: 70

Деление с выводом на экран

13.03.2010, 10:56. Показов 2495. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Мне нужно поделить 2 числа на ассемблере. Но при делении частное записывается в регистр AX, а остаток в регистр DX. Но проблема в том, что я не понимаю, как результат вывести на экран.
К примеру: нужно 5684 разделить на 4
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
assume SS:m1,DS:m2, CS:m3
m1 segment stack 
db 128 dup(?)
m1 ends
 
m2 segment
long dd 5684            
m2 ends
 
m3 segment
Entry:               
 
mov ax,m2           
mov ds,ax
mov dx, word ptr long+2    ;старший байт
mov  ax, word ptr long       ; младший байт
mov cx,4                         ; 4-остаток
div cx
 
mov dl,ax            ; Далее не знаю, как вывеси на экран частное из регистра AX
add dl, '0' 
mov ah,2          
int 21h    
int 16h
mov ax,4c00h
int 21h 
 
m3 ends
end Entry
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2010, 10:56
Ответы с готовыми решениями:

Деление знаковых чисел с выводом ошибки "Деление на ноль"
Собственно поставили передо мной задачу - написать прогу деления двух чисел, причем что бы учитывался знак, и помимо всего прочего при...

Сложение и деление с выводом на график
Всем привет. Я тут решил написать программу но не знаю как. :wall: Смысл программы в том чтоб на графике изображалось количество...

Деление числе с выводом - (Да), (Нет)
Дано два числа: a и b. Определите, является ли одно из этих чисел делителем другого. Выведите «YES», если одно из чисел является...

3
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.03.2010, 11:42
Цитата Сообщение от Rasul Посмотреть сообщение
К примеру: нужно 5684 разделить на 4
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
assume SS:m1,DS:m2, CS:m3
m1 segment stack 
db 128 dup(?)
m1 ends
 
m2 segment
long dw 5684d   ; 5684 влезит в слово, поэтому DW вместо DD        
m2 ends
 
m3 segment
Entry:               
 
mov ax,m2           
mov ds,ax
mov  ax, long       
mov cx,4                         ; 4-остаток ;??? причем тут остаток?, это делитель.
div cx
 
;mov dl,ax            ; Далее не знаю, как вывеси на экран частное из регистра AX
;add dl, '0'            ; Так не правильно, 
;mov ah,2            ; перед выводом нужно из HEX сделать DEC число
;int 21h 
 
; один из вариантов (взят здесь [url]https://www.cyberforum.ru/assembler/thread54461.html[/url])
       xor     cx, cx
        mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
        xor             dx,dx
        div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
        push    dx
        inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
        test    ax, ax
        jnz     oi2
; Теперь приступим к выводу.
        mov     ah, 02h
oi3:
        pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
 
        add     dl, '0'
        int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
        loop    oi3
 
mov ah,0   
int 16h
mov ax,4c00h
int 21h 
 
m3 ends
end Entry
Не компилировал, но должно быть все правильно.
1
8 / 7 / 3
Регистрация: 03.01.2009
Сообщений: 70
13.03.2010, 12:14  [ТС]
Kastaneda, к сожалению, ваша программа не компилируется. Помогите, пожалуйста.
И ещё вопрос: существет ли способ проще, чем этот. Нам дали это задание на первом занятии, когда мы не знали даже, что такое loop, pop, push итд. Возможно ли это сделать иным способом?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.03.2010, 12:58
Цитата Сообщение от Rasul Посмотреть сообщение
Kastaneda, к сожалению, ваша программа не компилируется. Помогите, пожалуйста.
Она компилируется, я пользуюсь TASM'ом, но думаю, что и MASM ее скомпилирует. Может вы что-то не правильно делаете?
tasm proga.asm
tlink proga.obj
У меня почему-то получается "переполнение деления", хотя под отладчиком работает нормально Но я своей Виндовской консоли не доверяю, код правильный, переполнению там взяться неоткуда.
И ещё вопрос: существет ли способ проще, чем этот. Нам дали это задание на первом занятии, когда мы не знали даже, что такое loop, pop, push итд. Возможно ли это сделать иным способом?
Вместо LOOP'а можно просто все действия по порядку написать, по-моему это называется линейное программирование. По-поводу " pop, push итд." ну можно использовать незадействованые регистры, или найти другой способ. Тут дело такое, у кого на сколько фантазия богата, тот так и изврощается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2010, 12:58
Помогаю со студенческими работами здесь

Деление с выводом остатка два двоичных числа Emu8086
Помогите разобраться.Нужна программа позволяющая делить с выводом остатка два произвольныхх двоичных положительных целых числа.Ввод...

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

Проблема с выводом на экран
При выполнении программы значения периметра, площади, углов и максимальную площадь выводит ноль, помогите решить проблему. namespace...

работа с выводом на экран
Помогите доделать прогу =(, не могу довести до ума ее!!!..... выдать сообщение "A>5", если это так....!!!!!! ввести числовое...

Цикл с выводом на экран
Всем привет. Не могли бы вы написать пример код цикла(не событие), который выполнится при нажатии на кнопку и будет постоянно на экране...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru