0 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 1
1

Перевод числа в римские цифры

21.05.2017, 20:08. Показов 1123. Ответов 1
Метки нет (Все метки)

Нужно написать программу, которая переводит число в римские цифры. Программа должна содержать макрос (! вот с ним особая проблема!) и должна быть в 16рязрядном режиме (сейчас она далеко не в нем)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
.model tiny
.code
.486
org 100h
START:
  mov ah,9
  mov dx,offset pin
  int 21h
 
  mov ah,10
  mov dx,offset strNumber
  int 21h                 ;вводим  с клавиатуры
 
  mov ah,9
  mov dx,offset rom       ;roman number is
  int 21h
 
  ;преобразуем строку в число
  movzx cx,[strNumber+1]
  mov   si,offset strNumber+2
  xor   eax,eax
  cdq
  str2int:lodsb
        imul dx,10
        add dx,ax
        sub dx,48
  loop str2int          ;Теперь в edx число
 
  mov ax,dx
  xor bx,bx
  jmp begincycle
 
  int2Rom:cwd
          div  word ptr[Base+bx]
          mov  cx,ax
          mov  ax,dx
          jcxz skip
          mov dx,[Roman+bx]
          pusha
          outnum:mov ah,9
                 int 21h
          loop outnum
          popa
          skip:add  bx,2
          begincycle:test ax,ax
  jne int2Rom
 
opr
  xor ax,ax
  int 16h
  dec al
  jne START ;если нажат esc - выход
 
  ret
 
  strNumber db 5, 6 DUP(0)
  Base      dw 100,90,50,40,10,9,5,4,1
  Roman     dw m,cm,d,cd,c,xc,l,xl,x,ix,v,iv,i
  pin       db 13,10,"Please, input the number(0...99): $"
  rom       db 13,10,"Roman number is:$"
  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
END START
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2017, 20:08
Ответы с готовыми решениями:

Перевод числа в римские цифры
Только - только начали проходить assembler. Задали написать программу, но я не представляю как...

Перевести римские цифры в арабские
Только начинаю изучать ассемблер и появилась сложность в написание программы. Необходима ввести с...

Перевод числа с арабских на римские цифры
Задача #2: Составить переводчик из арабской формы записи в римскую (и наоборот, но наоборот потом)....

Перевод чисел на римские цифры
Помогите пожалуйста :wall: Разработать программу, которая заданное целое число от 1 до 1999...

1
4$M f0r3v3r XD
6145 / 1787 / 199
Регистрация: 14.12.2014
Сообщений: 3,404
Записей в блоге: 11
22.05.2017, 09:39 2
Цитата Сообщение от Asvser Посмотреть сообщение
должна быть в 16рязрядном режиме (сейчас она далеко не в нем)
Да? А в каком же она сейчас режиме?

Я бы сказал, что программа вообще не работает. И даже не компилируется...

Держи:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
.model tiny
.code
.486
org 100h
 
input macro A
  mov ah,10
  mov dx,offset A
  int 21h
endm
 
output macro A
  mov ah,9
  mov dx,offset A
  int 21h
endm
 
getkey macro
  xor ax,ax
  int 16h
endm
 
START:
  output pin
  input strNumber                 ;вводим  с клавиатуры
  output rom         ;roman number is
 
  ;преобразуем строку в число
  movzx cx,[strNumber+1]
  jcxz exit
  mov   si,offset strNumber+2
  xor   eax,eax
  cdq
  str2int:lodsb
        imul dx,10
        add dx,ax
        sub dx,48
  loop str2int          ;Теперь в edx число
 
  mov ax,dx
  xor bx,bx
  jmp begincycle
 
  int2Rom:cwd
          div  word ptr[Base+bx]
          mov  cx,ax
          mov  ax,dx
          jcxz skip
          mov dx,[Roman+bx]
          pusha
          outnum:mov ah,9
                 int 21h
          loop outnum
          popa
          skip:add  bx,2
          begincycle:test ax,ax
  jne int2Rom
 
  getkey
  dec al
  jne START ;если нажат esc - выход
exit: 
  int 20h
 
  strNumber db 5, 6 DUP(0)
  Base      dw 100,90,50,40,10,9,5,4,1
  Roman     dw c,xc,l,xl,x,ix,v,iv,i
  pin       db 13,10,"Please, input the number(0...99): $"
  rom       db 13,10,"Roman number is:$"
  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
END START
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2017, 09:39

Перевод римские цифры в арабские и обратно
Помогите решить задачу на C++ перевод римские цифры в арабские и обратно. PLEASE.

Римские цифры
Напишите программу, которая преобразовывает римские числа в натуральные числа. Примечание. Римские...

Римские цифры
1) Римские цифры: а) проверить,правильно ли запись числа римскими цифрами б) записать данное число...

Римские цифры
Напишите программу, которая выводит таблицу всех римских эквивалентов десятичных чисел в диапазоне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.