Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.06.2011
Сообщений: 4
1

Преобразование ввода.Вводимые символы преобразуются в соответствие с заданием: 1,2,3,4,5. - ONE,TWO,THREE,FOUR,FIVE

09.06.2011, 22:04. Показов 753. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
срочно нужна ваша помощь в написании программы!!!!
Написать и отладить программы на языке Ассемблер:
1.Преобразование ввода.Вводимые символы преобразуются в соответствие с заданием: 1,2,3,4,5. - ONE,TWO,THREE,FOUR,FIVE.
2.Задан одномерный массив mas[n]. Отсортировать массив следующим методом: n=12, Сортировка прямым обменом (по убыванию)

помогите пожалуйста, очень нужно!!!!!!!!!!!!!!!!!!!!!!!!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2011, 22:04
Ответы с готовыми решениями:

Если вводимые символы - цифры, выполнить преобразование данной последовательности в целое число
Пусть вводится последовательность символов длинной не более.если вводимые символы цифры , то...

Если все вводимые символы - цифры, то выполнить преобразование данной последовательности в целое число
пусть вводится последовательность символов длиной не более 4.если все вводимые символы цифры,то...

Символы при выводе из БД не преобразуются (php emoji)
Пытаюсь наладить на сайте чтение смайликов. Подкинул этот плагин...

В соответствие с заданием разработать консольное приложение на языке программирования C++
Задание:Предметная область: Компьютерные игры. В соответствие с заданием разработать консольное...

3
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
09.06.2011, 23:07 2
Цитата Сообщение от asak Посмотреть сообщение
1.Преобразование ввода.Вводимые символы преобразуются в соответствие с заданием: 1,2,3,4,5. - ONE,TWO,THREE,FOUR,FIVE.
измените под своё задание, здесь от 0 до 9 ..
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
;***************************************************************
; Programa pakeicianti dvejetaini skaiciu desimtainiu
;***************************************************************
.model small
buferioDydis  EQU  100
.stack 256
.data
  bufDydis DB  buferioDydis          ;kiek maksimaliai simboliu galima nuskaityti
  nuskaite DB  ?                     ;cia bus patalpinta, kiek simboliu nuskaityta
  buferis  DB  buferioDydis dup (?)  ;cia bus talpinamas nuskaitytas skaicius
  
  ;kiti duomenys
  kiek     DB "Is viso simboliu:$"
  nulis    DB "Nulis$"
  vienas   DB "Vienas$"
  du       DB "Du$"
  trys     DB "Trys$"
  keturi   DB "Keturi$"
  penki    DB "Penki$"
  sesi     DB "Sesi$"
  septyni  DB "Septyni$"
  astuoni  DB "Astuoni$"
  devyni   DB "Devyni$"
  ivesk    DB "Iveskite eilute:$"
  enteris  DB  13, 10,'$'
  rezult   DB "Pakeista eilute:$"
  empty    DB "Nerasta jokiu simboliu $"
  klaida   DB "KLAIDA! $"
  ;Pagalbos praneрimas:
  help     DB "Daemon025$"
 
.code
  pradzia:
  MOV  ax, @data                         ;reikalinga kiekvienos programos pradюioj
  MOV  ds, ax                            ;reikalinga kiekvienos programos pradюioj
 
  MOV  ch, 0      
  MOV  cl, [es:0080h]                    ;programos paleidimo parametru simboliu skaicius raрomas ES 128-ame (80h) baite
  CMP  cx, 0                             ;jei paleidimo parametru nera,
  JE   Nera                              ;nereikia nieko tikrinti.
  MOV  bx, 0081h                         ;programos paleidimo parametrai raрomi segmente es pradedant 129 (arba 81h) baitu
Ieskok:
  CMP  [es:bx], '?/'                     ;atmintyje jaunesnysis baitas saugomas pirmiau,
                                         ;todel pirmasis baitas iraрomas i bl, o antrasis i bh.
                                         ;taip '/?' virsta '?/'.
  JE   Yra                               ;jeigu radau '/?', vadinasi reikia spausdinti praneрimа
  INC  bx                                ;neradau '/?' рiuose baituose, paslenku rodyklж ir tikrinu toliau esancius parametrus
  LOOP Ieskok                            ;jei dar nepatikrinti visi parametrai, reikia tikrinti toliau
  JMP  Nera                              ;jei patikrinti visi parametrai ir nerastas '/?' reikia baigti programos darbа
 
  ;spausdinu i ekranа pagalbos praneрimа
Yra:
  MOV  ah, 9                             ;i ah iraрau dosinio pertraukimo funkcijos numeri
  MOV  dx, offset help                   ;i dx iraрau nuorodа i spausdinamo teksto pradюiа
  INT  21h                      ;iрkvieciu dosini pertraukimа - spausdinu praneрimа
  JMP pabaiga
 
Nera:
  MOV  ah, 9
  MOV  dx, offset ivesk
  INT  21h                               ;spausdinamas prasymas ivesti eilute
  
  MOV  ah, 0Ah
  MOV  dx, offset bufDydis
  INT  21h                               ;nuskaitoma ivesta eilute
  
  MOV  ah, 9
  MOV  dx, offset enteris                ;kursorius nukeliamas i nauja eilute
  INT  21h                               ;kursorius nukeliamas i nauja eilute
  MOV  cl, nuskaite                      ;i cl idedama kiek simboliu buvo nuskaityta                                     
  CMP  cl, 0                              ;tikriname ar buvo nuskaityti simboliai
  JE tuscia1
  JMP next1
 
tuscia1:
  JMP tuscia                              ;Jei nieko persokame i 'tuscia' 
 
next1:
  MOV ah, 9
  MOV dx, offset rezult                 ;rezultato pranesimas
  INT 21h
 
  MOV SI, offset buferis 
check_s:
  CMP byte ptr [si], '0'
  JB raide
  CMP byte ptr [si], '9'
  JA raide
  MOV al, byte ptr [si]
  CALL Skaitmuo
  JMP kitas_simbolis
 
raide:
  MOV ah, 2
  MOV dx, [SI]
  INT 21h
kitas_simbolis:
  INC SI                         
  LOOP check_s
 
  MOV  ah, 9
  MOV  dx, offset enteris                ;kursorius nukeliamas i nauja eilute
  INT  21h                               ;kursorius nukeliamas i nauja eilute
 
  MOV cl, nuskaite
  LEA dx, kiek
  INT 21h
  
  MOV  ax, cx
  CALL Skaiciuok
  
  JMP pabaiga                            ;persokame i progarmos pabaiga       
error:
  LEA dx,klaida                         ;pranesimas apie klaida
  INT 21h
  JMP pabaiga 
  
tuscia:
  MOV ah, 9
  MOV dx, offset empty                  ;pranesimas apie tuscia buferi
  INT 21h      
pabaiga:
  MOV  ah, 4Ch                          ;reikalinga kiekvienos programos pabaigoj
  MOV  al, 0                            ;reikalinga kiekvienos programos pabaigoj
  INT  21h 
;----------------------------------------------------------------------------------
;           Spausdinsime pakeista skaitmeni
;----------------------------------------------------------------------------------  
PROC Skaitmuo
  
  MOV ah, 9
  
  CMP al, '0' ;tikriname ar simbolis yra '0'
  JE  L0 
  CMP al, '1' ;tikriname ar simbolis yra '1'
  JE  L1
  CMP al, '2' ;tikriname ar simbolis yra '2'
  JE  L2
  CMP al, '3' ;tikriname ar simbolis yra '3'
  JE  L3
  CMP al, '4' ;tikriname ar simbolis yra '4'
  JE  L4 
  CMP al, '5' ;tikriname ar simbolis yra '5'
  JE  L5
  CMP al, '6' ;tikriname ar simbolis yra '6'
  JE  L6
  CMP al, '7' ;tikriname ar simbolis yra '7'
  JE  L7
  CMP al, '8' ;tikriname ar simbolis yra '8'
  JE  L8
  CMP al, '9' ;tikriname ar simbolis yra '9'
  JE  L9
 
L0:
  LEA dx, nulis
  INT 21h
  JMP next
 
L1:
  LEA dx, vienas
  INT 21h
  JMP next
 
L2:
  LEA dx, du
  INT 21h
  JMP next
 
L3:
  LEA dx, trys
  INT 21h
  JMP next
 
L4:
  LEA dx, keturi
  INT 21h
  JMP next
 
L5:
  LEA dx, penki
  INT 21h
  JMP next
 
L6:
  LEA dx, sesi
  INT 21h
  JMP next
 
L7:
  LEA dx, septyni
  INT 21h
  JMP next
 
L8:
  LEA dx,astuoni
  INT 21h
  JMP next
 
L9:
  LEA dx, devyni
  INT 21h
  
next:
  RET
  Skaitmuo ENDP
  
PROC Skaiciuok
  ;Korektiрka procedыra privalo po darbo atstatyti panaudotu registru reikрmes
  ;Todel prieр tai turime jas kur nors iрsisaugoti
  ;Patogiausia tai daryti steke
  PUSH  ax
  PUSH  cx
  PUSH  dx
  
  MOV  cx, 10                          ;kadangi naudojam deрimtainж sistemа, tai dalinsim iр 10
  PUSH  "$$"                           ;kad spausdindami skaitmenis iр steko, galetume rasti pabaigа
Dalink:
  MOV  dx, 0                           ;tiesiog iрvalom registrа, nes jis dalyvaus dalyboje
  DIV  cx                              ;[DX,AX]:10 = AX(liek DX)
  PUSH  dx                             ;idedam skaitmeni i stekа; deja, negalime ideti 1 baito
  CMP  ax, 0                           ;ar dar neperskaiteme viso skaiciaus?
  JA  Dalink                           ;jei ne, skaitom toliau
 
  ;pradedam skaiciaus spausdinimа
  MOV  ah, 2                           ;i AH irasom simbolio spausdinimo dosines funkcijos numeri
Spausdink:
  POP  dx                              ;isimam skaitmeni is steko
  CMP  dx, "$$"                        ;ar isspausdinome visа skaiciu?
  JE  Finish                           ;jei taip, reikia baigti darbа
  ADD  dl, '0'                         ;liekanos jaunesnysis baitas - tai vienas skaitmuo; prideje simbolini 0 iр skaiciaus (pvz.: 1) gausime simboli ('1')
  INT  21h                             ;jei ne, spausdinam skaitmeni
  JMP  Spausdink                       ;spausdink kitа skaitmeni
Finish:
  ;Turime atstatyti iрsaugotu registru reikрmes
  POP  dx
  POP  cx
  POP  ax
  RET                                   ;grizimo is proceduros komanda
  Skaiciuok ENDP                        ;reikalinga kiekvienos proceduros pabaigoj
 
END pradzia
Добавлено через 47 секунд
да, это все мои комментарии
0
0 / 0 / 0
Регистрация: 09.06.2011
Сообщений: 4
09.06.2011, 23:22  [ТС] 3
Цитата Сообщение от Daemon025 Посмотреть сообщение
измените под своё задание, здесь от 0 до 9 ..
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
;***************************************************************
; Programa pakeicianti dvejetaini skaiciu desimtainiu
;***************************************************************
.model small
buferioDydis  EQU  100
.stack 256
.data
  bufDydis DB  buferioDydis          ;kiek maksimaliai simboliu galima nuskaityti
  nuskaite DB  ?                     ;cia bus patalpinta, kiek simboliu nuskaityta
  buferis  DB  buferioDydis dup (?)  ;cia bus talpinamas nuskaitytas skaicius
  
  ;kiti duomenys
  kiek     DB "Is viso simboliu:$"
  nulis    DB "Nulis$"
  vienas   DB "Vienas$"
  du       DB "Du$"
  trys     DB "Trys$"
  keturi   DB "Keturi$"
  penki    DB "Penki$"
  sesi     DB "Sesi$"
  septyni  DB "Septyni$"
  astuoni  DB "Astuoni$"
  devyni   DB "Devyni$"
  ivesk    DB "Iveskite eilute:$"
  enteris  DB  13, 10,'$'
  rezult   DB "Pakeista eilute:$"
  empty    DB "Nerasta jokiu simboliu $"
  klaida   DB "KLAIDA! $"
  ;Pagalbos praneрimas:
  help     DB "Daemon025$"
 
.code
  pradzia:
  MOV  ax, @data                         ;reikalinga kiekvienos programos pradюioj
  MOV  ds, ax                            ;reikalinga kiekvienos programos pradюioj
 
  MOV  ch, 0      
  MOV  cl, [es:0080h]                    ;programos paleidimo parametru simboliu skaicius raрomas ES 128-ame (80h) baite
  CMP  cx, 0                             ;jei paleidimo parametru nera,
  JE   Nera                              ;nereikia nieko tikrinti.
  MOV  bx, 0081h                         ;programos paleidimo parametrai raрomi segmente es pradedant 129 (arba 81h) baitu
Ieskok:
  CMP  [es:bx], '?/'                     ;atmintyje jaunesnysis baitas saugomas pirmiau,
                                         ;todel pirmasis baitas iraрomas i bl, o antrasis i bh.
                                         ;taip '/?' virsta '?/'.
  JE   Yra                               ;jeigu radau '/?', vadinasi reikia spausdinti praneрimа
  INC  bx                                ;neradau '/?' рiuose baituose, paslenku rodyklж ir tikrinu toliau esancius parametrus
  LOOP Ieskok                            ;jei dar nepatikrinti visi parametrai, reikia tikrinti toliau
  JMP  Nera                              ;jei patikrinti visi parametrai ir nerastas '/?' reikia baigti programos darbа
 
  ;spausdinu i ekranа pagalbos praneрimа
Yra:
  MOV  ah, 9                             ;i ah iraрau dosinio pertraukimo funkcijos numeri
  MOV  dx, offset help                   ;i dx iraрau nuorodа i spausdinamo teksto pradюiа
  INT  21h                      ;iрkvieciu dosini pertraukimа - spausdinu praneрimа
  JMP pabaiga
 
Nera:
  MOV  ah, 9
  MOV  dx, offset ivesk
  INT  21h                               ;spausdinamas prasymas ivesti eilute
  
  MOV  ah, 0Ah
  MOV  dx, offset bufDydis
  INT  21h                               ;nuskaitoma ivesta eilute
  
  MOV  ah, 9
  MOV  dx, offset enteris                ;kursorius nukeliamas i nauja eilute
  INT  21h                               ;kursorius nukeliamas i nauja eilute
  MOV  cl, nuskaite                      ;i cl idedama kiek simboliu buvo nuskaityta                                     
  CMP  cl, 0                              ;tikriname ar buvo nuskaityti simboliai
  JE tuscia1
  JMP next1
 
tuscia1:
  JMP tuscia                              ;Jei nieko persokame i 'tuscia' 
 
next1:
  MOV ah, 9
  MOV dx, offset rezult                 ;rezultato pranesimas
  INT 21h
 
  MOV SI, offset buferis 
check_s:
  CMP byte ptr [si], '0'
  JB raide
  CMP byte ptr [si], '9'
  JA raide
  MOV al, byte ptr [si]
  CALL Skaitmuo
  JMP kitas_simbolis
 
raide:
  MOV ah, 2
  MOV dx, [SI]
  INT 21h
kitas_simbolis:
  INC SI                         
  LOOP check_s
 
  MOV  ah, 9
  MOV  dx, offset enteris                ;kursorius nukeliamas i nauja eilute
  INT  21h                               ;kursorius nukeliamas i nauja eilute
 
  MOV cl, nuskaite
  LEA dx, kiek
  INT 21h
  
  MOV  ax, cx
  CALL Skaiciuok
  
  JMP pabaiga                            ;persokame i progarmos pabaiga       
error:
  LEA dx,klaida                         ;pranesimas apie klaida
  INT 21h
  JMP pabaiga 
  
tuscia:
  MOV ah, 9
  MOV dx, offset empty                  ;pranesimas apie tuscia buferi
  INT 21h      
pabaiga:
  MOV  ah, 4Ch                          ;reikalinga kiekvienos programos pabaigoj
  MOV  al, 0                            ;reikalinga kiekvienos programos pabaigoj
  INT  21h 
;----------------------------------------------------------------------------------
;           Spausdinsime pakeista skaitmeni
;----------------------------------------------------------------------------------  
PROC Skaitmuo
  
  MOV ah, 9
  
  CMP al, '0' ;tikriname ar simbolis yra '0'
  JE  L0 
  CMP al, '1' ;tikriname ar simbolis yra '1'
  JE  L1
  CMP al, '2' ;tikriname ar simbolis yra '2'
  JE  L2
  CMP al, '3' ;tikriname ar simbolis yra '3'
  JE  L3
  CMP al, '4' ;tikriname ar simbolis yra '4'
  JE  L4 
  CMP al, '5' ;tikriname ar simbolis yra '5'
  JE  L5
  CMP al, '6' ;tikriname ar simbolis yra '6'
  JE  L6
  CMP al, '7' ;tikriname ar simbolis yra '7'
  JE  L7
  CMP al, '8' ;tikriname ar simbolis yra '8'
  JE  L8
  CMP al, '9' ;tikriname ar simbolis yra '9'
  JE  L9
 
L0:
  LEA dx, nulis
  INT 21h
  JMP next
 
L1:
  LEA dx, vienas
  INT 21h
  JMP next
 
L2:
  LEA dx, du
  INT 21h
  JMP next
 
L3:
  LEA dx, trys
  INT 21h
  JMP next
 
L4:
  LEA dx, keturi
  INT 21h
  JMP next
 
L5:
  LEA dx, penki
  INT 21h
  JMP next
 
L6:
  LEA dx, sesi
  INT 21h
  JMP next
 
L7:
  LEA dx, septyni
  INT 21h
  JMP next
 
L8:
  LEA dx,astuoni
  INT 21h
  JMP next
 
L9:
  LEA dx, devyni
  INT 21h
  
next:
  RET
  Skaitmuo ENDP
  
PROC Skaiciuok
  ;Korektiрka procedыra privalo po darbo atstatyti panaudotu registru reikрmes
  ;Todel prieр tai turime jas kur nors iрsisaugoti
  ;Patogiausia tai daryti steke
  PUSH  ax
  PUSH  cx
  PUSH  dx
  
  MOV  cx, 10                          ;kadangi naudojam deрimtainж sistemа, tai dalinsim iр 10
  PUSH  "$$"                           ;kad spausdindami skaitmenis iр steko, galetume rasti pabaigа
Dalink:
  MOV  dx, 0                           ;tiesiog iрvalom registrа, nes jis dalyvaus dalyboje
  DIV  cx                              ;[DX,AX]:10 = AX(liek DX)
  PUSH  dx                             ;idedam skaitmeni i stekа; deja, negalime ideti 1 baito
  CMP  ax, 0                           ;ar dar neperskaiteme viso skaiciaus?
  JA  Dalink                           ;jei ne, skaitom toliau
 
  ;pradedam skaiciaus spausdinimа
  MOV  ah, 2                           ;i AH irasom simbolio spausdinimo dosines funkcijos numeri
Spausdink:
  POP  dx                              ;isimam skaitmeni is steko
  CMP  dx, "$$"                        ;ar isspausdinome visа skaiciu?
  JE  Finish                           ;jei taip, reikia baigti darbа
  ADD  dl, '0'                         ;liekanos jaunesnysis baitas - tai vienas skaitmuo; prideje simbolini 0 iр skaiciaus (pvz.: 1) gausime simboli ('1')
  INT  21h                             ;jei ne, spausdinam skaitmeni
  JMP  Spausdink                       ;spausdink kitа skaitmeni
Finish:
  ;Turime atstatyti iрsaugotu registru reikрmes
  POP  dx
  POP  cx
  POP  ax
  RET                                   ;grizimo is proceduros komanda
  Skaiciuok ENDP                        ;reikalinga kiekvienos proceduros pabaigoj
 
END pradzia
Добавлено через 47 секунд
да, это все мои комментарии


есть ошибки!!
0
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
09.06.2011, 23:28 4
Возможно удалил что-то лишнее вместе со своей контактной информацией, следовательно ошибки должны быть в 31 строке. Всё же, как видно невооруженным взглядом, в нашем разговоре слишком мало уделяется аргументированным и конструктивным вопросам и упрёкам.\
0
09.06.2011, 23:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2011, 23:28
Помогаю со студенческими работами здесь

Фильтр на вводимые символы
эта программа создает динамический массив, задавая при этом сколько эллементов будет в массиве,...

Проверка на вводимые символы
Как грамотно сделать проверку на вводимые символы? Чтобы при вводе в имя можно было вводить только...

Отсортировать вводимые с клавиатуры символы
Добрый день! Мне необходимо вводить данные с клавиатуры, например "Мама мыла раму" и чтобы...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru