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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2008, 00:05   #1
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Вопрос Из 10-ой в 2-ую систему на TASM

Как можно в Ассемблере перевести десятичное число в двоичное, и вывести результат на экран. Нужно продложить программу.
Можно ли как короче написать перевод с выводом, если нет, можно и обычным способом.
Посмотрите...
Может кто знает как это сделать.
___________________________________ ______________________________
Нужно доделать именно на TASM.
Вложения
Тип файла: rar DecToBin.rar (894 байт, 17 просмотров)
Alter вне форума Ответить с цитированием
Старый 21.02.2008, 06:28   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Было:
Код:
assume cs:mycode, ds:mydate, ss:mystack
mycode  segment para 
start:  push  ds     
        xor   ax,ax  
        push  ax
        mov   ax,seg mydate
        mov   ds,ax
        mov   ax, x  ; ax := 5
	mov   bx, y  ; bx := 4
        add   ax, bx ; ax := ax + bx  
        mov   z,ax   ; z := ax  // Ax = 9
         ; НАЧАЛО перевода числа из Z в Двоичную систему

         ; КОНЕЦ перевода числа из Z в Двоичную систему
        retf         
mycode  ends

mydate    segment para
x       dw   5
y       dw   4
z       dw   ?
mydate  ends

mystack segment para stack 'stack'
        dw 100 dup (?) ; резервируется место для стека.
mystack ends

        end start
Стало:
Код:
assume cs:mycode, ds:mydate, ss:mystack
mycode  segment para 
start:  
		push  ds     


        xor   ax,ax  
        push  ax
        mov   ax,seg mydate
        mov   ds,ax
        mov   ax, x  ; ax := 5
		mov   bx, y  ; bx := 4     
        add   ax, bx ; ax := ax + bx  
        mov   z,ax   ; z := ax  // Ax = 9
         ; НАЧАЛО перевода числа из Z в Двоичную систему

		pushf
		push	di
		push	ax
		push	bx
		push	es
		
		mov		ax, ds
		mov		es,	ax

		std
		lea		di, String
		add		di, 9
		mov		ax, '$'
		stosb

		mov		bx, z
l1:
		mov		ax, bx
		and		ax, 1
		add		al, '0'
		stosb
		shr		bx, 1
		jnz		l1
		
		mov		dx, di
		inc		dx
		mov		ax, 0900h
		int		21h		

		pop		es
		pop		bx
		pop		ax
		pop		di
		popf


         ; КОНЕЦ перевода числа из Z в Двоичную систему

        retf         
mycode  ends
;
mydate    segment para
x       dw   5
y       dw   4
z       dw   ?

String	db 10 dup (0)
mydate  ends

mystack segment para stack 'stack'
        dw 100 dup (?) ; резервируется место для стека.
mystack ends

        end start
B_N вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
Проблемы с компиляцией в TASM ViT22 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 24.08.2008 00:18
Чем отличается Tasm от Masm veter_s_morya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 21.07.2008 16:55
Задача на TASM gh0st Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.11.2007 21:50