Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

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

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

.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, 17:56   #2
Drimetolle
Новичок
 
Регистрация: 12.03.2017
Сообщений: 3
Репутация: 10
По умолчанию

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

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, 09:46   #4
Nif-naf
Пользователь
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 28
Репутация: 10
По умолчанию

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

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 ?
Ну и т.д...
7in вне форума   Ответить с цитированием
Старый 25.04.2017, 08:50   #6
Nif-naf
Пользователь
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 28
Репутация: 10
По умолчанию

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

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

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


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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




17:59.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru