Отличия от предыдущей программы выделены жирным шрифтом, часть из которых просто изменение меток.
ideal
model small, stdcall
p386
codeseg
startupcode
RepeatInput:
mov ah,9
mov dx,offset Prompt
int 21h
mov [Buff],20
inc ah
mov dx,offset Buff
int 21h
movzx ax,[byte Buff+1]
call TernaryToBin,offset Buff+2,ax
jnc Print
mov dx,offset Error
mov ah,9
int 21h
jmp RepeatInput
Print:
mov [Number],eax
mov dx,offset Result
mov ah,9
int 21h
call WriteDec,[dword Number]
mov dx,offset Quit
mov ah,9
int 21h
dec ah
int 21h
exitcode
proc TernaryToBin uses ebx cx edx si edi, Addr :word, Len: word
xor ebx,ebx
mov edi,ebx
mov si,Addr
mov cx,Len
jcxz TErr
lodsb
cmp al,'-'
jne TerToBin1
not edi
jmp TerToBin2
TerToBin1:
cmp al,'+'
jne TerToBin4
TerToBin2:
dec cx
jcxz TErr
TerToBin3:
lodsb
TerToBin4:
sub al,'0'
jb TErr
cmp al,2
ja TErr
movzx eax,al
xchg eax,ebx
mov edx,3
mul edx
add ebx,eax
loop TerToBin3
mov eax,ebx
xor eax,edi
sub eax,edi
or eax,eax
jmp TerToBin5
TErr:
stc
TerToBin5:
ret
endp
proc WriteDec uses eax ebx cx edx, X :dword
mov eax,X
cdq
xor eax,edx
sub eax,edx
and dl,'-'
jz WrDec1
push eax
mov al,dl
int 29h
pop eax
WrDec1:
mov ebx,10
xor cx,cx
WrDec2:
cdq
div ebx
or dl,'0'
push dx
inc cx
test eax,eax
jnz WrDec2
WrDec3:
pop ax
int 29h
loop WrDec3
ret
endp
dataseg
Prompt db 'Введите число в троичной системе: $'
Result db 13,10,'Число в десятичной системе: $'
Error db 13,10,'Ошибка! Повторите ввод. ',13,10,36
Quit db 13,10,10,'Для завершения нажмите любую клавишу... $'
udataseg
Buff db 22 dup (?)
Number dd ?
stack 100h
end
Диапазон представления десятичных чисел: -387420488 ...1162261466.
Другие языки программирования и технологии
Как перевести число из троичной системы счисления в десятичную в Ассемблер (tasm)
Умножать на три и прибавлять, как завещал великий Горнер. И так восемь раз!!!
на этот вопрос тебе ответит твой учитель по программированию.
Делить на три, до тех пор, пока число не кончится.
Даже на ассемблере это просто.
Даже на ассемблере это просто.
Похожие вопросы
- Как перевести число из двоичной системы счисления в восьмеричную в Ассемблер (tasm) Программа должна быть простой!
- Как перевести число из восьмеричной системы счисления в двоичную в Ассемблер (tasm) Программа должна быть простой!
- Как перевести число из троичной системы счисления в восмеричную в Ассемблере?
- Помогите перевести числа в разные системы счисления. HELP!!!
- Как перевести число из 16ричной системы счисления в двоичную?
- Как из десятичной системы счисления перевести число в троичную?
- аскаль. Написать программу которая переводит число из одной системы счисления в другую
- Алгоритмы перевода чисел из одной системы счисления в другую, арифметика в различных системах счисления
- Напишите программу, которая выводит запись переданного ей числа в римской системе счисления. Используйте процедуру. С++
- Если парень в 11 классе смог написать программу по переводу чисел из одной системы счисления в другую, то ему смело