Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
1

Вывод чисел

06.05.2011, 01:06. Показов 1010. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
собственно задание написано в коде.использую функцию из топика про вывод чисел как бы задание почти сделал.
при превращение асм файла в obj турбо ассемблер не ругается.
но при линковке появляется сообщение
32-битная запись найдена в коде.
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
;Реализовать процедуру, выводящую целое положительное число типа word на экран в
;шестнадцатеричной системе счисления. Вывести на экран пять чисел, используя
;разработанную процедуру. Исходные значения жестко кодируются в программе.
.486
.model tiny
.data
a dw 100
b dw 15
c dw 56
d dw 67
e dw 89
.code 
Shat proc
        xor     cx, cx
        mov     bx, 16
del:
        xor    dx,dx
        div     bx
        push    dx
        inc     cx
        or    ax, ax
        jnz     del
        mov     ah, 02h
izv:
        pop     dx
        cmp    dl,9
        jbe      norm
        add    dl,7
norm:
        add   dl, '0'
        int     21h
        loop  izv        
        ret
Shat endp 
start:
         mov ax,a
         call Shat
         mov ax,b
         call Shat
         mov ax,d
         call Shat
         mov ax,c
         call Shat
         mov ax,d
         call shat
end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2011, 01:06
Ответы с готовыми решениями:

Вывод чисел от 1 до 30
Есть программа: .stack 100h .data .code start: mov cx, 30 mov dl, '1' mov ah, 02

Вывод чисел в 10 сс
Дано задание найти сумму диагонали массива, под диагональю и над диагональю. Закинуть получившиеся...

Вывод натуральных чисел
Всем привет. Мне по заданию нужно вывести все парные натуральные числа до 30. Как мне оформить этот...

Вывод двузначных чисел
Как сделать, чтобы количество цифр было больше 10? Я ввожу 11 чисел и мне выдает символ. data...

8
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
06.05.2011, 01:08 2
Опечатка в последнем call? Shat написано с маленькой буквы shat
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
06.05.2011, 01:52  [ТС] 3
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Опечатка в последнем call? Shat написано с маленькой буквы shat
да опечатка
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
06.05.2011, 02:08 4
ты задал 486(32 бит)
а используешь коды 8086(16 бит)
может на это ругается
хотя маловероятно

Добавлено через 1 минуту
есть один косяк
32 стока
loop
для 486 будет работать с ecx
а ты обнуляешь cx

Добавлено через 51 секунду
убери 4 строку
1
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
06.05.2011, 02:15  [ТС] 5
убрал строку.
перестало ругаться.
хотя ничего и не выводит...хех.
значит где-то намутил
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
06.05.2011, 02:38 6
функция вывода на экран у 21 прерывание по моему 09 а не 02

Добавлено через 1 минуту
пардон это вывод строки

Добавлено через 7 минут
ah(номер функции) у тебя определяется до цикла(может прерывание его портит)
попробуй определять ее перед вызовом прерывания
для этих вещей (поиск багов) необходим отладчик
могу порекомендовать TD TurboDebug входил в комплект поставки Borland C 3.0 - 3.1
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
06.05.2011, 17:30 7
Artishok, если Вы пишите екзешник, то .model small, а не tiny, добавьте сегмент стека, инициализируйте сегмент данных и завершите программу через функцию 4ch.
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
06.05.2011, 18:03  [ТС] 8
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
.8086
.model small
.stack
.data
a dw 100
b dw 15
c dw 56
d dw 67
e dw 89
.code 
Shat proc
        xor     cx, cx
        mov     bx, 16; hexadecimal
;dividing by 16 untl ax!=0
del: 
        xor    dx,dx
        div     bx
        push    dx
        inc     cx;size of hex. 2C ->2
        test   ax, ax ;0
        jnz     del
        mov     ah, 02h
izv:
        pop     dx
        cmp    dl,9
        jbe      norm
        add    dl,7
norm:
        add   dl, '0'
        int     21h
        loop  izv        
        ret
Shat endp 
start:
         mov ax,a
         call Shat
         mov ax,b
         call Shat
         mov ax,d
         call Shat
         mov ax,c
         call Shat
         mov ax,d
         call shat
         mov ah,4ch
         int 21h
end start
вот кое-что исправил.выводит.
но проблема в том что выводит цифры и буквы, которые ни разу ни одно из чисел в 16-чной системе счисления.
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
06.05.2011, 18:06 9
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.8086
.model small
.stack 20h
..................
start:
         mov ax,@data
         mov ds,ax
         mov ax,a
         call Shat
         mov ax,b
         call Shat
         mov ax,d
         call Shat
         mov ax,c
         call Shat
         mov ax,d
         call shat
         mov ah,4ch
         int 21h
end start
1
06.05.2011, 18:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2011, 18:06
Помогаю со студенческими работами здесь

Вывод чисел на экран
Составить программу которая выводит десятичные числа от 0 до бесконечности!!!

Ввод и вывод чисел
Как ввести число 2017 ?; как вывести число 137?(если учесть, что необходимо число 2017 перевести в...

Вывод чисел >10 на экран
Вот конец программы, Надо что-то исправить, чтобы на экран выводилось любое число, (функция 02h) а...

Вывод чисел на экран
Пожалуйста подскажите как можно вывести на экран числа. Необходимо вывести по 10 чисел в столбец


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru