Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2017, 16:42   #1
Drimetolle
 
Регистрация: 12.03.2017
Сообщений: 3
По умолчанию Перевод числа в строку

При выводе числа, выводятся посторонние символы. Возможности приложить скриншот нет.
Код:
.MODEL TINY
.STACK 100h

.CODE

dan:
mov ax,1335
push ax
push bx
push dx
push cx
xor cx,cx
mov bx,10

lp1:
xor dx,dx
div bx
add dl,'0'
push dx
inc cx
test ax,ax
jnz lp1

lp2:
pop dx
mov [di],dl
inc di
loop lp2

Main:
mov ah,09
int 21h 
mov ah,4ch
int 21h


pop dx
pop cx
pop ax
pop bx


ret

End dan
Drimetolle вне форума Ответить с цитированием
Старый 18.03.2017, 16:56   #2
Drimetolle
 
Регистрация: 12.03.2017
Сообщений: 3
По умолчанию

Скриншот
Изображения
Тип файла: png Снимок.PNG (9.9 Кб, 216 просмотров)
Drimetolle вне форума Ответить с цитированием
Старый 19.03.2017, 08:22   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

fn.09h/int 21h будет выводить строку, пока не встретит знак($) - маркер конца строки.
Снимай со-стека в АХ и выводи сразу на консоль через INT-29h, например так:
Код:
.MODEL TINY
.STACK 100h
.CODE

dan:
   mov   ax,1335
   xor   cx,cx
   mov   bx,10

lp1:
   xor   dx,dx
   div   bx
   add   dl,'0'
   push  dx
   inc   cx
   or    ax,ax
   jnz   lp1

lp2:
   pop   ax
   int   29h
   loop  lp2

   mov   ah,4ch
   int   21h

End dan
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 24.04.2017, 08:46   #4
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

Masm4. Вот и мой файлик.
Вложения
Тип файла: zip QXY.ASM.zip (643 байт, 31 просмотров)
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Старый 24.04.2017, 17:39   #5
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Nif-naf, ты уж извини, но это полная жесть!
Код:
NEXT: MOV DX,0
      DIV BX
      CMP DX,0
      JE T1
      CMP DX,1
      JE T2
      CMP DX,2
      JE T3
      CMP DX,3
      JE T4
      CMP DX,4
      JE T5
      CMP DX,5
      JE T6
      CMP DX,6
      JE T7
      CMP DX,7
      JE T8
      CMP DX,8
      JE T9
      CMP DX,9
      JE T10
T1:   MOV BYTE PTR [SI],'0'
      JMP D2
T2:   MOV BYTE PTR [SI],'1'
      JMP D2
T3:   MOV BYTE PTR [SI],'2'
      JMP D2
T4:   MOV BYTE PTR [SI],'3'
      JMP D2
T5:   MOV BYTE PTR [SI],'4'
      JMP D2
T6:   MOV BYTE PTR [SI],'5'
      JMP D2
T7:   MOV BYTE PTR [SI],'6'
      JMP D2
T8:   MOV BYTE PTR [SI],'7'
      JMP D2
T9:   MOV BYTE PTR [SI],'8'
      JMP D2
T10:  MOV BYTE PTR [SI],'9'
D2:   INC SI
      INC N
      MOV DX,AX
      CMP DX,0
      JNZ NEXT
Зачем так извращаться, когда можно написать (для данного случая) add dl,'0' + mov byte ptr [si],dl ?
И зачем делать лишние телодвижения с MOV DX,AX + CMP DX,0, когда можно сразу сравнить AX ?
Ну и т.д...
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 25.04.2017, 07:50   #6
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

Уже не молод и согласен с выше написаным. Можно ещё проще outint Y с io.asm от Пильщикова. В ассемблере 13 лет и не всегда проги на ассемблере все проходят без ошибок - в этом и причина.
В файлике строчку Include IO.asm можно убрать и вместо ININT A, Mov Ax,A написать MOV AX,123, тогда и в Masm5 файлик должен заработать.
Немного о GoAsm.

Последний раз редактировалось Nif-naf; 25.04.2017 в 08:49.
Nif-naf вне форума Ответить с цитированием
Старый 30.04.2017, 07:15   #7
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

Вот из файлика получился файл. В бейсике занимает 70 кб. в Досе.
В виндовс 1 мб. на с. Только умножение не очень. Как в Досе на Масм 4 перемножить поточнее?
Вложения
Тип файла: zip QXY.zip (1.4 Кб, 14 просмотров)
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Старый 30.04.2017, 09:00   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию


Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 01.05.2017, 03:04   #9
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

Спасибо. Шестнадцатиричные числа значить. А у меня десятичные записаны. Вместо 15 получается 17.
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод числа в текстовую строку, исправить код (FASM) Tanchik0611 Помощь студентам 2 21.10.2012 16:29
Перевод в строку большого числа RIO Общие вопросы C/C++ 0 23.05.2010 23:51
Перевод дробного числа в строку пауэрлифтинг Общие вопросы Delphi 2 30.01.2010 20:18
С++ перевод числа в строку и нааборот freest Общие вопросы C/C++ 2 08.01.2010 14:01