Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 18

Процедура перевода в ASCII

18.03.2013, 14:30. Показов 1971. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у меня код, есть кое-какое число, которое нужно вывести на экран...
Написал процедуру перевода в ASCII что б вывести корректно, но оно не работает...
Помогите найти ошибки =(((
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
.386
    .model flat, stdcall
    option casemap :none
 
    include C:\masm32\include\windows.inc
    include C:\masm32\include\user32.inc
    include C:\masm32\include\kernel32.inc
    include C:\masm32\include\masm32.inc
    includelib C:\masm32\lib\user32.lib
    includelib C:\masm32\lib\kernel32.lib
    includelib C:\masm32\lib\masm32.lib
 
 
.data
res dw 5F2Dh
 
.data?
mes_r db 7 dup (?)
buffer db 100 dup(?)
 
.code
start:
 
mov ax, res
shr ax, 8
call ASCII
mov ax, 1310
 
mov [ebx], ax
inc ebx
mov al, 0
mov [ebx], al
 
 invoke StdOut,ADDR mes_r
 invoke StdIn,ADDR buffer,100 ; receive text input
 
 
;процедура переводу в ASCII код
 
ASCII proc
 
    mov ax, res
    push ax
    shr ah,4
    or ah,30h
    cmp ah, 39
jbe m
    add ah, 6
 
m:
    lea ebx, mes_r
    mov [ebx], ah
    inc ebx
    pop ax
    and ah, 0fh
    or ah, 30h
    cmp ah, 39
jbe n
    add ah, 6
 
n:
    lea ebx, mes_r
    mov [ebx], ah
    inc ebx
ret
ASCII endp
 
invoke ExitProcess,0
end start
Заранее блогодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2013, 14:30
Ответы с готовыми решениями:

Процедура перевода из 10 сс в 2 сс. Блок схема
Товарищи, помогите пожалуйста, задача следующая. Написать рекурсивную процедуру перевода натурального числа из десятичной системы...

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

Процедура перевода из декартовой системы координат в полярную
Напишите процедуру перевода из декартовой системы координат в полярную. Заранее спасибо

5
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
18.03.2013, 14:32
а почему бы не заюзать printf?
0
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 18
18.03.2013, 14:52  [ТС]
Цитата Сообщение от Fatal Error Посмотреть сообщение
а почему бы не заюзать printf?
Ассемблер только начинаю изучать, потому пишу, как получается и как придумаю... =/
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.03.2013, 15:05
apelseene,
что бы не придумывать велосипед не плохо начать с чтения учебника по ассемблеру, тогда и ошибки не придется искать
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
18.03.2013, 15:10
не тестировал. число для вывода в еах, в es:esi буфер, куда будет помещен ASCII строка-число
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
OutInt proc
        
;; если число знаковое, то необходимо расскоментировать следующие строки
;; Проверяем число на знак.
   test    eax, eax
   jns     oi1
;
;; Если оно отрицательное, выведем минус и оставим его модуль.
   push ax
   mov al, '-'
   stosb
   pop ax   
   neg     eax
;; Количество цифр будем держать в CX.
oi1:  
    xor     ecx, ecx
    mov     ebx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
    xor     edx,edx
    div     ebx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
    push    edx
    inc     ecx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
    test    eax, eax
    jnz     oi2
; Теперь приступим к выводу.
oi3:
    pop     eax
; Извлекаем очередную цифру, переводим её в символ и выводим.
;; раскоментировать если основание сс > 10, т.е. для вывода требуются буквы
;   cmp     al,9
;   jbe     oi4
;   add     al,7
;oi4:
    add     al, '0'
    stosb
; Повторим ровно столько раз, сколько цифр насчитали.
    loop    oi3
    
    ret
 
OutInt endp
1
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 18
18.03.2013, 21:41  [ТС]
Цитата Сообщение от Fatal Error Посмотреть сообщение
не тестировал. число для вывода в еах, в es:esi буфер, куда будет помещен ASCII строка-число
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
OutInt proc
        
;; если число знаковое, то необходимо расскоментировать следующие строки
;; Проверяем число на знак.
   test    eax, eax
   jns     oi1
;
;; Если оно отрицательное, выведем минус и оставим его модуль.
   push ax
   mov al, '-'
   stosb
   pop ax   
   neg     eax
;; Количество цифр будем держать в CX.
oi1:  
    xor     ecx, ecx
    mov     ebx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
    xor     edx,edx
    div     ebx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
    push    edx
    inc     ecx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
    test    eax, eax
    jnz     oi2
; Теперь приступим к выводу.
oi3:
    pop     eax
; Извлекаем очередную цифру, переводим её в символ и выводим.
;; раскоментировать если основание сс > 10, т.е. для вывода требуются буквы
;   cmp     al,9
;   jbe     oi4
;   add     al,7
;oi4:
    add     al, '0'
    stosb
; Повторим ровно столько раз, сколько цифр насчитали.
    loop    oi3
    
    ret
 
OutInt endp

Благодарю, будем тестировать... =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2013, 21:41
Помогаю со студенческими работами здесь

Процедура перевода чисел из десятичной системы счисления в другие
var k: integer; s: byte; procedure scale (a: integer; b: byte); begin if b > 10 then write...

Рекурсивная процедура перевода числа из десятичной системы счисления в двоичную
3) Написать рекурсивную процедуру перевода нату¬рального числа из десятичной системы счисления в двоич¬ную.

Написать программу удаления из текстового файла символов перевода строки ‘\n’ и перевода каретки ‘\r’
Здравствуйте,помогите написать программу на подобии этой,только не подсчета,а удаления.Заранее благодарен! #include <stdio.h> int...

Как использовать charsToTrim с ASCII кодом? или как удалить множество символов из строки используя код ASCII
Как использовать charsToTrim с ASCII кодом? или как удалить множество символов из строки используя код ASCII

Процедура ПередЗаписью и Процедура ПередЗаписьюНаСервере
В документе после нажатия на кнопку Провести и закрыть надо запросить информацию у пользователя : «Количество оборудования введено верно?»...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru