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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 21:50   #1
Ortega
 
Аватар для Ortega
 
Регистрация: 03.12.2008
Сообщений: 9
По умолчанию Перевод арабских чисел в римские на ассемблере

Помогите написать программу перевода арабских чисел в римские на ассемблере. Хотелось бы найти наиболее простой алгоритм. Если кому не лень можете в общих чертах описать прогу (что использовать, какими методами реализовывать)
Заранее спасибо.
Вы только что начали читать предложение,чтение которого вы уже заканчиваете.
Ortega вне форума Ответить с цитированием
Старый 18.12.2010, 22:36   #2
Ortega
 
Аватар для Ortega
 
Регистрация: 03.12.2008
Сообщений: 9
По умолчанию

есть такой код
Код:
.data
        pin db "Please, input the number(0...3999): $"    
        ferr db "Error!$"
        rom db "Roman number is:$"
        numb dw 8 DUP(?)
        buff dw 0                                 
        perev db "",0ah
        m db  "M$"                            ;  M dw  1000         
        cm db "CM$"                           ;  CM dw  900 
        d db  "D$"                            ;  D dw   500 
        cd db "CD$"                           ;  CD dw  400 
        c db  "C$"                            ;  C db   100 
        xc db "XC$"                           ;  XC db   90
        l db  "L$"                            ;  L db    50
        xl db "XL$"                           ;  XL db   40
        x db  "X$"                            ;  X db    10
        ix db "IX$"                           ;  IX db    9
        v db  "V$"                            ;  V db     5
        iv db "IV$"                           ;  IV db    4
	i db  "I$"                            ;  I db     1   
        
.code 
START:   
	mov ax, @data
	mov ds, ax
	
	mov ah, 09h
	lea dx, pin        ; vivod podskazki
	int 21h 
	 
        mov ah, 0Ah
	mov numb[0], 5       ; vvod dec 4isla
	lea dx, numb
	int 21h
	
	mov ax, numb 
        cmp ax, 0
        jl step1
        mov ax, numb        ; proverka predelov
        cmp ax, 3999
        jg step1 
 
        mov ah, 09h
        lea dx, perev        ; vivod podskazki
	int 21h
      
	mov ah, 09h
        lea dx, rom             ;roman number is
        int 21h
        	
        mov cx,10    
thous:  mov ax, numb
	cmp ax, 1000
	jl met1
	mov bx,numb
	mov ax, 1000 
        sub bx,ax
        mov numb, bx   	; nali4ie tisya4 
        mov ah, 09h
        lea dx, m
	int 21h
	dec cx
	;mov ah, 09h
       ;lea dx, numb
	;int 21h 
loop thous	 
 
met1:   mov cx,10
 nineh: mov ax, numb
	cmp ax, 900
	jl met2       
        sub numb,900      	; nali4ie 900 
        mov ah, 09h
        lea dx, cm
	int 21h
	dec cx 
loop nineh	
  
met2:   mov cx,10
 fiveh: mov ax, numb
	cmp ax, 500
	jb met3 
        sub numb, 500     ; nali4ie 500 
        mov ah, 09h
        lea dx, d
	int 21h
	dec cx 
loop fiveh	       

step1: mov ah, 09h
       lea dx, ferr        ; error
       int 21h 
       jmp fin

met3: 	mov cx,10
 fourh: mov ax, numb
	cmp ax, 400
	jb met4 
        sub numb,400   	; nali4ie 400 
        mov ah, 09h
        lea dx, cd
	int 21h
	dec cx 
loop oneh 

met4:	mov cx,10
 oneh:  mov ax, numb
	cmp ax, 100
	jb met5 
        sub numb,100   	; nali4ie 100 
        mov ah, 09h
        lea dx, c
	int 21h
	dec cx 
loop oneh 

met5:   mov cx,10
 ninet: mov ax, numb
	cmp ax, 90
	jb met6 
        sub numb,90   	; nali4ie 90 
        mov ah, 09h
        lea dx, xc
	int 21h
	dec cx 
loop ninet 
         
met6:   mov cx,10
 fift:  mov ax, numb
	cmp ax, 50
	jb met7 
        sub numb,50   	; nali4ie 50 
        mov ah, 09h
        lea dx, l
	int 21h
	dec cx 
loop fift 

met7:   mov cx,10
 fourt:  mov ax, numb
	cmp ax, 40
	jb met8 
        sub numb,40   	; nali4ie 40 
        mov ah, 09h
        lea dx, xl
	int 21h
	dec cx 
loop fourt 

met8:   mov cx,10
  ten:  mov ax, numb
	cmp ax, 10
	jb met9 
        sub numb,10   	; nali4ie 10 
        mov ah, 09h
        lea dx, x
	int 21h
	dec cx 
loop ten 

met9:   mov cx,10
  nine: mov ax, numb
	cmp ax, 9
	jb met10 
        sub numb,9   	; nali4ie 9 
        mov ah, 09h
        lea dx, ix
	int 21h
	dec cx 
loop nine

met10:   mov cx,10
  five: mov ax, numb
	cmp ax, 5
	jb met11 
        sub numb,5   	; nali4ie 5
        mov ah, 09h
        lea dx, v
	int 21h
	dec cx 
loop five

met11:  mov cx,10
  four: mov ax, numb
	cmp ax, 4
	jb met12 
        sub numb,4   	; nali4ie 4
        mov ah, 09h
        lea dx, iv
	int 21h
	dec cx 
loop four

met12:  mov cx,10
  one:  mov ax, numb
	cmp ax, 1
	jb met13 
        sub numb,1   	; nali4ie 1
        mov ah, 09h
        lea dx, i
	int 21h
	dec cx 
loop one 

met13:	mov ah, 09h
	lea dx, perev        ; vivod podskazki
	int 21h 
        
fin:	mov ah, 4ch
	int 21h
END START
подскажите в чем косяк перевода?
Вы только что начали читать предложение,чтение которого вы уже заканчиваете.
Ortega вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод отрицательных чисел в Ассемблере Alex1991 Помощь студентам 8 30.10.2010 19:36
представление чисел в ассемблере fecc106 Помощь студентам 0 15.04.2010 14:24
Сортировка чисел на ассемблере ( плачу 8$ за прогу ) Алексей-76 Помощь студентам 2 13.02.2008 19:54
Задача: перевод целых чисел в римские n0x Паскаль, Turbo Pascal, PascalABC.NET 4 12.12.2006 19:52