Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler для начинающих

Войти
Регистрация
Восстановить пароль
 
Mblp
114 / 13 / 3
Регистрация: 07.12.2013
Сообщений: 58
#1

Преобразование из кода Морзе в цифры и обратно - Assembler

26.03.2014, 15:57. Просмотров 512. Ответов 4
Метки нет (Все метки)

в общем есть задание
Цифры представляются кодом Морзе следующим образом:
1 . - - - - 6 - . . . .
2 . . - - - 7 - - . . .
3 . . . - - 8 - - - . .
4 . . . . - 9 - - - - .
5 . . . . . 0 - - - - -
Составьте программу по переводу набора цифр код Морзе, а так преобразование из кода Морзе в цифры.
что не так?
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
global _main
extern _printf
extern _scanf ; новая функция, но уже знакома нам их языка Си
section .data
o db ".----"
t db "..---"
tr db "...--"
f db "....-"
fi db "....."
s db "-...."
se db "--..."
et db "---.."
n db "----."
z db "-----"
f_pf: db "result: %f", 10, 0 ; формат вывода
welcome: db "Enter your number: ", 0 ; приглашение
f_sf: db "%f", 0 ; формат ввода
a dd 0
section .text
_main:
mov eax, 0
 
push welcome
call _printf
add esp, 4
 
push a
push f_sf
call _scanf
add esp, 8
 
; очищаем регистры от мусора
xor eax,eax
xor ebx,ebx
xor edx,edx
; основной код.
mov eax,a
cmp eax,1
je chisl1
jmp pro1
chisl1: mov eax,o
pro1: cmp eax,o
je morze1
jmp end 
morze1: mov eax,1
cmp eax,2
je chisl2
jmp pro2
chisl2: mov eax,t
pro2: cmp eax,t
je morze2
jmp end 
morze2: mov eax,2
cmp eax,3
je chisl3
jmp pro3
chisl3: mov eax,tr
pro3: cmp eax,tr
je morze3
jmp end 
morze3: mov eax,3
cmp eax,4
je chisl4
jmp pro4
chisl4: mov eax,f
pro4: cmp eax,f
je morze4
jmp end 
morze4: mov eax,4
cmp eax,5
je chisl5
jmp pro5
chisl5: mov eax,fi
pro5: cmp eax,fi
je morze5
jmp end 
morze5: mov eax,5
cmp eax,6
je chisl6
jmp pro6
chisl6: mov eax,s
pro6: cmp eax,s
je morze6
jmp end 
morze6: mov eax,6
cmp eax,7
je chisl7
jmp pro7
chisl7: mov eax,se
pro7: cmp eax,se
je morze7
jmp end 
morze7: mov eax,7
cmp eax,8
je chisl8
jmp pro8
chisl8: mov eax,et
pro8: cmp eax,et
je morze8
jmp end 
morze8: mov eax,8
cmp eax,9
je chisl9
jmp pro9
chisl9: mov eax,n
pro9: cmp eax,n
je morze9
jmp end 
morze9: mov eax,9
cmp eax,0
je chisl0
jmp pro0
chisl0: mov eax,z
pro0: cmp eax,z
je morze0
jmp end 
morze0: mov eax,"0"
push eax
push f_pf
call _printf
add esp,8
end: mov eax,0
ret
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 15:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Преобразование из кода Морзе в цифры и обратно (Assembler):

Преобразование текстовых файлов из кодировки DOS в кодировку Windows и обратно (tasm) - Assembler
Преобразование текстовых файлов из кодировки DOS в кодировку Windows и обратно по теме "Преобразование текстовых файлов из кодировки DOS в...

Преобразование кода символа - Assembler
Не могу код "05" (который в таблице это крестик) в код пятерки 35h и вывести ее. Вместо пятерки выводится смайлик. assume...

Преобразование числового кода - Assembler
Подскажите пожалуйста как можно программно реализовать алгоритм преобразование hex кода в символьный код. Заранее спасибо.

Преобразование кода в FASM - Assembler
Имеется код текстового редактора. Нужно данный код преобразовать в FASM, чтоб нормально запускался и компилировался. Заранее благодарен. ...

Преобразование слов со знаком из дополн. кода в прямой код. - Assembler
Сессия, а разобраться уже не успеваю, помогите... Написать программу для преобразования всех элементов некоторого массива слов со знаком из...

Что означают цифры в приведенной строке кода - Assembler
подскажите пожалуйста, что в этих строках значат цифры mes2 db 13,10,'Hi success db 0ah,0dh,'Hello ','$'

4
AFP
649 / 336 / 37
Регистрация: 04.04.2012
Сообщений: 887
26.03.2014, 19:20 #2
Надо цифры азбуки Морзе (-----) преобразовать в символы (0) ?
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
;Преобразование символов цифр в код азбуки Морзе
;
;DOS, TASM, COM-файл
;
;Создание СОМ-файла
;tasm.exe /m filename.asm
;tlink.exe /t /x filename.obj
;Получается filename.com
;
.model tiny
.code
.386
org 100h
start:
    mov ah,9
    lea dx,str
    int 21h
m1:
    xor ax,ax
    int 16h
    cmp al,1Bh  ;Esc
    jz short exit
    sub al,30h
    cmp al,09h
    ja short m1 ;не цифра
push ax
    add al,30h
    mov ah,2
    mov dl,al
    int 21h
pop ax
    mov bl,al   ;номер выводимой строки
    shl bl,1
    mov dx,mes[bx]
    mov ah,9
    int 21h
    jmp short m1
exit:
    ret     ;выход из программы
 
mes dw a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 ;адреса строк
 
a0  db '> -----',13,10,'$'
a1  db '> .----',13,10,'$'
a2  db '> ..---',13,10,'$'
a3  db '> ...--',13,10,'$'
a4  db '> ....-',13,10,'$'
a5  db '> .....',13,10,'$'
a6  db '> -....',13,10,'$'
a7  db '> --...',13,10,'$'
a8  db '> ---..',13,10,'$'
a9  db '> ----.',13,10,'$'
 
str db 'Esc - exit',13,10
welcome db "Enter your number:",13,10,'$'
 
    end start
1
Mblp
114 / 13 / 3
Регистрация: 07.12.2013
Сообщений: 58
26.03.2014, 20:47  [ТС] #3
спасибо огромное, но я так понимаю это TASM мне желательно на NASM)
если не трудно!
0
Mblp
114 / 13 / 3
Регистрация: 07.12.2013
Сообщений: 58
29.03.2014, 13:40  [ТС] #4
в общем) спасибо за помощь) все сделал) выкладываю готовый вариант (преобразование цифр в морзе) может кому надо будет
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
80
81
82
83
84
global _main
extern _printf
extern _scanf ; новая функция, но уже знакома нам их языка Си
section .data
o db ".----",0
t db "..---",0
tr db "...--",0
f db "....-",0
fi db ".....",0
s db "-....",0
se db "--...",0
et db "---..",0
n db "----.",0
z db "-----",0
f_pf: db "%s", 10, 0 ; формат вывода
welcome: db "Enter your number: ", 0 ; приглашение
f_sf: db "%d", 0 ; формат ввода
a dd 0
section .text
_main:
mov eax, 0
 
push welcome
call _printf
add esp, 4
 
push a
push f_sf
call _scanf
add esp, 8
 
; очищаем регистры от мусора
xor eax,eax
xor ebx,ebx
xor edx,edx
; основной код.
mov eax,[a]
cmp eax,1
je chisl1
cmp eax,2
je chisl2
cmp eax,3
je chisl3
cmp eax,4
je chisl4
cmp eax,5
je chisl5
cmp eax,6
je chisl6
cmp eax,7
je chisl7
cmp eax,8
je chisl8
cmp eax,9
je chisl9
cmp eax,0
je chisl0
chisl1: mov esi,o
jmp end
chisl2: mov esi,t
jmp end
chisl3: mov esi,tr
jmp end
chisl4: mov esi,f
jmp end
chisl5: mov esi,fi
jmp end
chisl6: mov esi,s
jmp end
chisl7: mov esi,se
jmp end
chisl8: mov esi,et
jmp end
chisl9: mov esi,n
jmp end
chisl0: mov esi,z
jmp end
end:
push esi
push f_pf
call _printf
add esp,8
mov eax,0
ret
0
AFP
649 / 336 / 37
Регистрация: 04.04.2012
Сообщений: 887
30.03.2014, 01:14 #5
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
80
81
82
83
;Преобразование из кода Морзе в цифры
;
;DOS, TASM, COM-файл
;tasm.exe /m filename.asm
;tlink.exe /t /x filename.obj
;
.model tiny
.code
.386
ORG 100h
START:
    xor bx,bx
    xor cx,cx
    lea si,str
    lea di,buf
 
    mov ah,9
    lea dx,str_Esc
    int 21h
m1:
    xor ax,ax
    int 16h
    cmp al,1Bh  ;Esc
    jz short exit
    cmp al,'.'
    jz short ok
    cmp al,'-'
    jnz short m1
ok:
    mov ah,2
    mov dl,al
    int 21h
 
    stosb
    inc cx
    cmp cx,5
    jnz short m1
m4:
    lea di,buf
    repe cmpsb
    jnz short m2
    mov ah,9
    mov dx,si
    int 21h
    xor bx,bx
    xor cx,cx
    lea di,buf
    lea si,str
    jmp short m1
m2:
    inc bx
    cmp bx,10
    jnz short m3
 
    mov ah,9
    lea dx,str_error
    int 21h
    xor bx,bx
    xor cx,cx
    lea si,str
    lea di,buf
    jmp short m1 
m3:
    add si,cx
    add si,5
    mov cx,5
    jmp short m4    
exit:
    ret
str_Esc db 13,10,'Esc - exit',13,10,'$'
str db '----- 0',13,10,'$'
    db '.---- 1',13,10,'$'
    db '..--- 2',13,10,'$'
    db '...-- 3',13,10,'$'
    db '....- 4',13,10,'$'
    db '..... 5',13,10,'$'
    db '-.... 6',13,10,'$'
    db '--... 7',13,10,'$'
    db '---.. 8',13,10,'$'
    db '----. 9',13,10,'$'
str_error db ' Error',13,10,'$'
buf:
    end start
0
30.03.2014, 01:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 01:14
Привет! Вот еще темы с ответами:

Проверка кода с контролем по четности на правильность и преобразование в двоичную систему счисления - Assembler
Проверка кода с контролем по четности на правильность и преобразование в двоичную систему счисления

Преобразование строки в её аналог на основе ASCII-кодов и поиск max и min кода - Assembler
Привет, вот вроде как рабочий код , В начале проверка паролем, потом ввод строки и поиск максимального кода, Собсно вопрос...

Морзе. Заменить цифры на код морзе. - Pascal
ПОМОГИТЕ!!! Люди вот пишу программу. Задание: необходимо в текстовом файле заменить цифры на код морзе, если попадаются буквы, то их не...

Сделать программу шифрации сообщения в азбуку Морзе и обратно - Delphi
Вот само задание Разработать программу шифрации сообщения в азбуку Морзе и обратно. Предусмотреть вариант настройки интерфейса, с...


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

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

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