Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.12.2024
Сообщений: 4
TASM

Сократимые дроби - нахождение наибольшего общего делителя

05.12.2024, 15:19. Показов 2132. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу на языке Ассемблера, которая позволяет ввести с клавиатуры 10 записей, содержащих два поля: (Числитель (1 байт), Знаменатель (1 байт)) для хранения информации об обыкновенных дробях. Затем определяет и выводит на экран по группам (каждая своим цветом) сведения о правильных и неправильных дробях, несократимых дробях и сократимых дробях. Для последних необходимо также вывести число, на которое выполняется сокращение. Дроби выводятся в виде числителя и знаменателя, разделенных косой чертой, например,1/2, 8/9, 25/28 и т.д. Программа должна проверять допустимость вводимых значений.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2024, 15:19
Ответы с готовыми решениями:

[I8085] Написать рекурсивный алгоритм поиска наибольшего общего делителя
i8085 Написать рекурсивный алгоритм поиска найбольшего общего делителя

Нахождение наибольшего общего делителя и наименьшего общего кратного двух натуральных
Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел (НОК(А,В)= А*В/ НОД...

Нахождение наибольшего общего делителя и наименьшего общего кратного двух чисел
Задача на функции 1. Составить программу нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел...

11
228 / 169 / 71
Регистрация: 14.06.2024
Сообщений: 458
05.12.2024, 15:44
Цитата Сообщение от Helsetiwd Посмотреть сообщение
Числитель (1 байт), Знаменатель (1 байт)
знаковые?
0
0 / 0 / 0
Регистрация: 03.12.2024
Сообщений: 4
05.12.2024, 16:50  [ТС]
думаю да

Добавлено через 1 минуту
думаю да
0
228 / 169 / 71
Регистрация: 14.06.2024
Сообщений: 458
05.12.2024, 17:12
Цитата Сообщение от Helsetiwd Посмотреть сообщение
думаю да
тогда диапазон чисел всего -128...127
0
Заблокирован
05.12.2024, 20:55
Цитата Сообщение от Helsetiwd Посмотреть сообщение
также вывести число, на которое выполняется сокращение
как в сократимых на выходе должна выглядеть дробь 81/-27 ?
0
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
05.12.2024, 21:02
Цитата Сообщение от Helsetiwd Посмотреть сообщение
думаю да
А я думаю - нет Задача и так излишне переусложнена для уровня начинающих.
Хотя в вычислении НОД нет никаких проблем. Вся трудность в правильном вводе и выводе данных,
это достаточно сложная программа для начинающих. Возможно, что даже стоит
ограничить числитель и знаменатель значениями от 0 до 99.
0
0 / 0 / 0
Регистрация: 03.12.2024
Сообщений: 4
06.12.2024, 12:55  [ТС]
это задача для курсовой работы на 1 курсе

Добавлено через 1 минуту
нам не говорили каких либо пояснений и тому подобное, поэтому можно сделать, как удобно. главное сделать
0
 Аватар для sporta1982
211 / 56 / 7
Регистрация: 05.10.2023
Сообщений: 459
06.12.2024, 12:57
Цитата Сообщение от Helsetiwd Посмотреть сообщение
это задача для курсовой работы на 1 курсе
это под dos?
0
0 / 0 / 0
Регистрация: 03.12.2024
Сообщений: 4
06.12.2024, 13:54  [ТС]
на досбоксе работаем
0
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
06.12.2024, 18:05
Вот пример простого в отладке и работе решения. Здесь нет структур, массивов и прочего.
Тестировалась в DosBox.

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
; ввести с клавиатуры 10 записей, содержащих два поля:
; (Числитель (1 байт), Знаменатель (1 байт)) для хранения информации
; об обыкновенных дробях. Затем определяет и выводит на экран по группам
; (каждая своим цветом) сведения о правильных и неправильных дробях,
; несократимых дробях и сократимых дробях.
 
    .model small
    .data
EOL = 13 ; признак конца строки
hdr db "Fraction Reduction",13,10 ; заголовок и подсказка
    db 13,10
    db "Enter fraction like this:",13,10
    db "28/84",13,10
    db "or like this:",13,10
    db "28 84",13,10
    db "Numbers must fit into bytes.$"
nl  db 13,10,"$"
tab db 9,"$"
slash   db "/$"
nrec    db 0 ; номер вводимой дроби
pr1 db ">$" ; подсказка ввода
buf1    db 10 ; буфер ввода (макс - 9 символов)
len1    db 0  ; возвр длина строки
string1 db 10 dup (0) ; буфер строки
invinp  db 13,10,"Invalid input$"
finalword db 13,10,"The task is completed$"
chislit   db 0
znamenat  db 0
nod   db 0 ; наибольший общий делитель
chislit2  db 0 ; сокращённая дробь
znamenat2 db 0
proper  db 0,"$" ; правильная (p) или неправильная (i) дробь
color   dw 0     ; цвет выводимой строки результата 
; цвета текста (требуется DosBox или драйвер ANSI.SYS)
colred     db 27,"[1;31m$"
colgreen   db 27,"[1;32m$"
colyellow  db 27,"[1;33m$"
colblue    db 27,"[1;34m$"
colmagenta db 27,"[1;35m$"
colcyan    db 27,"[1;36m$"
colwhite   db 27,"[1;37m$"
colnormal  db 27,"[0m$" ; цвет (нормальный)
    .code
 
; длинный условный переход
jumpz   macro lab
local m1
    jnz m1
    jmp lab
m1:
    endm
 
; печать строки txt
print   macro txt
    mov dx,offset txt
    call printsub
    endm
 
printsub:push ax
    mov ah,9
    int 21h
    pop ax
    ret
 
; получение НОД по алгоритму Евклида
bolshee equ ah
menshee equ al
 
findnod:
    mov bolshee,chislit
    mov menshee,znamenat
retry:  cmp bolshee,menshee ; выяснить какое число больше, какое меньше 
    jnc skip2
    xchg bolshee,menshee
; 1 если числа равны, взять первое число в качестве результата и перестать работать
skip2:  jz found
; 2 если числа не равны, вычесть меньшее из большего и разностью заменить большее
    sub bolshee,menshee
; после этого выполнить шаг 1
    jmp retry
found:  mov nod,bolshee ; НОД найден, далее сокращаем дробь
    mov bl,nod
    mov al,chislit
    mov ah,0
    div bl
    mov chislit2,al
    mov al,znamenat
    mov ah,0
    div bl
    mov znamenat2,al
    ret
 
; найти первую цифру в строке
findDigit:mov dl,[si]
    cmp dl,EOL
    jnz find1
    stc
    ret
find1:  cmp dl,"0"
    jb find2
    cmp dl,"9"
    ja find2
    clc
    ret
find2:  inc si
    jmp findDigit
 
; прочитать очередное число в строке
atoi:   sub ax,ax
    sub cx,cx
    mov bx,10 ; основание системы счисления
atoi1:  mov cl,[si]
    inc si
    cmp cl,"0"
    jb atoi2 ; если не цифра, то завершить преобразование
    cmp cl,"9"
    ja atoi2
    sub cl,"0" ; cl - цифра
    mul bx ; ax=ax*10+cx
    add ax,cx
    jmp atoi1
atoi2:  cmp ax,255 ; число умещаеется в байт ?
    ja  atoi3
    clc        ; да - al=число
    ret
atoi3:  stc        ; нет - ошибка
    ret 
 
; вывод числа al на дисплей как числа без знака
printval:mov ah,0
oi1:    xor     cx, cx
        mov     bx, 10
oi2:    xor     dx,dx
        div     bx ; ax=ax/10, dx=ax mod 10
        push    dx ; занести цифру в стек
        inc     cx ; увеличить счётчик цифр
        test    ax, ax ; ax=0 ?
        jnz     oi2 ; если нет, то продолжить
        mov     ah, 2 ; ah=код функции "печать символа dl"
oi3:    pop     dx  ; вытащить цифры из стека и напечатать
        add     dl, '0'
        int     21h
        loop    oi3
    ret
 
; сообщение "неверный ввод" и выход в Дос
badinput:print invinp
    mov ax,4C01h
    int 21h
    ret
; выход в Дос при пустой строке 
exdos:  mov ax,4C00h
    int 21h
 
; основная программа
start:  mov ax,@data
    mov ds,ax
    mov es,ax
    print colwhite ; печать заголовка
    print hdr
main:   print colnormal ; основной цикл
    print nl
    inc nrec
    mov al,nrec ; печать посказки
    call printval
    print pr1
    mov dx,offset buf1 ; ввод строки
    mov ah,10
    int 21h
    mov cl,len1 ; если длина строки=0 то выход в Дос
    mov ch,0
    jcxz exdos
    mov si,offset string1 ; адрес начала строки
    call findDigit ; считать числитель
    jc  badinput   ; при ошибке или неожиданном конце строки переход на badinput
    call atoi
    jc  badinput
    mov chislit,al
    call findDigit ; считать знаменатель
    jc  badinput
    call atoi
    jc  badinput
    mov znamenat,al
    print nl      ; печатать перевод строки
    cmp chislit,0 ; если числитель или знаменатель=0 то переход на badout
    jumpz badout
    cmp znamenat,0
    jumpz badout
    mov proper,'p' ; найти правильная или неправильная дробь
    mov color,offset colgreen ; зелёный цвет - правильная дробь
    mov al,chislit
    cmp al,znamenat
    jc sk0
    mov proper,'i'
    mov color,offset colyellow ; жёлтый цвет - неправильная дробь
sk0:    call findnod ; найти НОД
    mov dx,color ; установить цвет строки вывода
    mov ah,9
    int 21h
    mov al,chislit ; вывести введённую дробь
    call printval
    mov al,znamenat 
    cmp al,1
    jz sk1
    print slash
    call printval
sk1:    print tab
    print proper ; вывести признак "правильная-неправильная"
    print tab
    mov al,nod   ; вывести НОД
    call printval
    print tab
    mov al,chislit2 ; вывести сокращённую дробь
    call printval
    mov al,znamenat2
    cmp al,1
    jz sk2
    print slash
    call printval
sk2:    cmp nrec,10 ; если введено 10 дробей, то закончить программу
    jz sk3
    jmp main    ; иначе возврат к началу основного цикла
; end of program    
sk3:    print colnormal ; установить обычный цвет
    print finalword
    mov ax,4C00h    ; выход в Дос
    int 21h
 
badout: print colred    ; числит или знаменат=0 - напечатать дробь красным цветом
    mov al,chislit  ; (при этом действия с дробью не выполняются)
    call printval
    print slash
    mov al,znamenat 
    call printval
    jmp sk2
    end start
1
 Аватар для sporta1982
211 / 56 / 7
Регистрация: 05.10.2023
Сообщений: 459
13.12.2024, 14:07
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
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
text segment 'code'
     assume cs:text,ds:text
 
     begin: mov ax,text
     mov ds,ax
     mov es,ax
     
     mov ah, 0h
     mov al,3
     int 10h 
     
     mov ah,09h
     mov dx,offset whitesymbols
     int 21h 
     
     mov ah,09h
     mov dx,offset messagePresent
     int 21h
     
    
retype:
     mov di,offset dig1
     mov [odd],0h
     call vvodchisla      ; ax = 1 - succes; ax = 0ffh error , bh = 0 , bl = last character
     
     cmp ax,0ffh
     jnz type1
     mov [saveindex],0
     jmp retype
     
type1: 
     mov si,offset dig1
     call savenumber
     cmp ax,0ffh
     jle ok1
     
     call perevod
     mov ah,09h
     mov dx,offset messageChislitelBolshe255
     int 21h
     mov [saveindex],0
     jmp retype
     
     
     
     
ok1:
     mov [odd],1
     mov di,offset dig4
     call vvodchisla
     
     cmp ax,0ffh
     jnz type2
     mov [saveindex],0
     jmp retype
     
type2:
     push bx
     mov si,offset dig4
     call savenumber
     pop bx
     cmp ax,0ffh
     jbe ok2
     
     call perevod
     mov ah,09h
     mov dx,offset messageZnamenatelBolshe255
     int 21h
     mov [saveindex],0
     jmp retype
     
 ok2:
     
     inc [saveindex]
     inc [saveindex]
     cmp bl,0dh
     jnz retype
     
     cmp [saveindex],014h
     jz startprocess
     
     
    
     call perevod
     mov ah,09h
     mov dx,offset messageMalo
     int 21h
     mov [saveindex],0
     jmp retype
   
     
     
savenumber:
     mov cx,0
     mov cl,[numdigit]
     dec cx
     add si,cx
     mov al,[si]
     mov bx,ax
     cmp cx,0
     
     jz save1
     
     
     dec si
     dec cx
     mov al,[si]
     mov dl,0ah
     mul dl
     add bx,ax
     cmp cx,0
     
     jz save1
     dec si
     mov al,[si]
     mov dl,64h
     mov dh,0
     mul dx
     add ax,bx
     mov bx,ax
     
save1:
     mov ax,bx
     mov cx,0
     mov cl,[odd]
     
     mov si,offset a1
     mov dx,0
     mov dl,[saveindex]
     add si,dx
     add si,cx
     mov [si],al
     ret
     
    ; mov cx,[numdigit]
     
     
     
     
 
     
     
     
     
startprocess:  
     mov ah,09h
     mov dx,offset redsymbols
     int 21h 
     
     mov ah,09h
     mov dx,offset messagetrue
     int 21h
     
     mov di,offset a1
     mov si,offset b1
     
truedrob:
     mov al,ds:[di]
     mov bl,ds:[si]
     cmp al,bl
     jae nextdrob
     push bx
     call tostring
     call vyvodchisla
     call vyvodslash
     pop ax
     call tostring
     call vyvodchisla
     call probel
      
 nextdrob:
     mov al,[counter1]
     dec al
     jz nextsec1
     mov [counter1],al
     mov ah,0h
     mov bx,0ah
     sub bx,ax
     
     mov di,offset a1
     mov si,offset b1
     mov cx,bx
 increment0:
     inc di
     inc di
     inc si
     inc si
     loop increment0
     
     jmp truedrob
  
 nextsec1:
     mov al,0ah
     mov [counter1],al
     
     call perevod
     mov ah,09h
     mov dx,offset bluesymbols
     int 21h 
    
     mov ah,09h
     mov dx,offset messagefalse
     int 21h
     mov di,offset a1
     mov si,offset b1
falsedrob:
     mov al,ds:[di]
     mov bl,ds:[si]
     cmp al,bl
     jb nextdrob1
     push bx
     call tostring
     call vyvodchisla
     call vyvodslash
     pop ax
     call tostring
     call vyvodchisla
     call probel
     
 nextdrob1:
    
     mov al,[counter1]
     dec al
     jz nextsec2
     mov [counter1],al
     mov ah,0h
     mov bx,0ah
     sub bx,ax
     
     mov di,offset a1
     mov si,offset b1
     
     mov cx,bx
 increment1:
     inc di
     inc di
     inc si
     inc si
     loop increment1
     
     jmp falsedrob
     
 nextsec2:   
     
     mov si,offset a1
     mov di,offset NOD1
     mov cx,0ah
     
 nextdrobe123:
     mov al,[si]
     mov bl,[si+1]
     
 cycle:
     cmp al,bl
     jae next
     xchg ax,bx
     
 next:
     sub al,bl
     test al,al
     jnz cycle
     mov [di],bl
     inc si
     inc si
     inc di
     loop nextdrobe123
     
     call perevod
     mov ah,09h
     mov dx,offset greensymbols
     int 21h 
     
     mov ah,09h
     mov dx,offset messageNesokratit
     int 21h 
     
     ; mov di,offset NOD1
     ; mov bl,NOD1
     ; mov di,[NODX]
     ; add bl,di
     
     mov di,offset a1
     mov si,offset NOD1
     
     
     mov al,0ah
     mov [counter1],al
     
cyclenextdrob3: 
     mov al,ds:[di]
     mov bl,[si]
     cmp bl,1
     jnz nextdrob3
     
     push si
     push di
     inc di
     mov bl,[di]
     push bx
     call tostring
     call vyvodchisla
     call vyvodslash
     pop ax
     call tostring
     call vyvodchisla
     call perevod
     pop di
     pop si
     
 nextdrob3:
     inc di
     inc di
     inc si
     
     mov al,[counter1]
     dec al
     mov [counter1],al
     cmp al,0
     jnz cyclenextdrob3
     
     
     mov ah,09h
     mov dx,offset whitesymbols
     int 21h 
     
     mov ah,09h
     mov dx,offset messageSokratit
     int 21h 
     
     ; mov di,offset NOD1
     ; mov bl,NOD1
     ; mov di,[NODX]
     ; add bl,di
     
     mov di,offset a1
     mov si,offset NOD1
     
     
     mov al,0ah
     mov [counter1],al
     
 cyclenextdrob4: 
     mov al,ds:[di]
     mov bl,[si]
     cmp bl,1
     jz nextdrob4
     
     push si
     push di
     inc di
     mov bl,[di]
     push bx
     call tostring
     call vyvodchisla
     call vyvodslash
     pop ax
     call tostring
     call vyvodchisla
    
    
     
     
     
     mov ah,09h
     mov dx,offset messageNOD
     int 21h 
     
     pop di
     pop si
     
     mov al,[si]
     push si
     push di
     
     call tostring
     call vyvodchisla
     call perevod
     pop di
     pop si
     
     
 nextdrob4:
     inc di
     inc di
     inc si
     
     mov al,[counter1]
     dec al
     mov [counter1],al
     cmp al,0
     jnz cyclenextdrob4
     
   
     
     
     
     
 exit1:   
     mov ah,4ch
     mov al,0
     int 21h
     
 nocorrect2:        
     call perevod
     mov ah,09h
     mov dx,offset messageNocorrect
     int 21h
     mov ax,0ffh
     ret
     
 vvodchisla:
     
     mov al,0
     mov [numdigit],al
     
     push di
     mov ah,01h  ;; pervi vvod
     int 21h
     pop di
     cmp al,30h
     jb nocorrect2
     cmp al,39h
     ja nocorrect2
     sub al,30h
     
     mov [numdigit],1
     mov [di],al
     
     push di
     mov ah,01h  ;;vtoroi vvod
     int 21h
     pop di
     inc di
     
     cmp [odd],1
     jz znamenatel1
     
     cmp al,0dh    ;chislitel1
     jz nocorrect
     cmp al,' '
     jz nocorrect
     cmp al,'\'
     jz finish
     
znamenatel1:  ;znamenatel1
     cmp al,0dh
     jz finish
     cmp al,' '
     jz finish
     
     cmp al,30h
     jb nocorrect
     cmp al,39h
     ja nocorrect
     sub al,30h
     mov [numdigit],2
     mov [di],al
     mov ah,01h  ;;tretii vvod
     push di
     int 21h
     pop di
     inc di
     
     cmp [odd],1
     jz znamenatel2
     
     cmp al,0dh    ;chislitel2
     jz nocorrect
     cmp al,' '
     jz nocorrect
     cmp al,'\'
     jz finish
     
 znamenatel2:    
     
     cmp al,0dh
     jz finish
     cmp al,' '
     jz finish
     cmp al,30h
     jb nocorrect
     cmp al,39h
     ja nocorrect
     sub al,30h
     mov [numdigit],3
     mov [di],al
     
     mov ah,01h  ;;chetvertii vvod
     push di
     int 21h
     pop di
     
     cmp [odd],0
     jz  chislitel3
     cmp al,0dh
     jz finish
     cmp al,' '
     jnz nocorrect
     jmp finish
 chislitel3:
     cmp al,'\'
     jnz nocorrect
     jmp finish
 finish:
     mov bx,ax
     mov bh,0
     mov ax,1 
     ret
 nocorrect:
     call perevod
     mov ah,09h
     mov dx,offset messageNocorrect
     int 21h
     mov ax,0ffh
     ret
 
 probel:
     mov ah,09h
     mov di,offset string
     mov dx,di
     mov byte ptr [di],' '
     inc di
     mov byte ptr [di],'$'
     int 21h
     ret
     
 perevod:
     mov ah,09h
     
     mov di,offset string
     mov dx,di
    
     mov byte ptr [di],0dh
     inc di
     mov byte ptr [di],0ah
     inc di
     mov byte ptr [di],'$'
     int 21h
     ret
     
     
 vyvodchisla:
     mov ah,09h
     mov dx,offset string
     int 21h
     ret
 vyvodslash:
     mov di,offset string
     mov dx,di
     mov al,'\'
     mov [di],al
     inc di
     mov al,'$'
     mov [di],al
     mov ah,09h
     int 21h
     ret
 tostring:
     mov bx,0   ;
     mov ah,0   ; al contain number
     mov cx,0ah
     
     tostringm1:div cl     ; 
     
     
     add ah,030h
     mov di,offset string
     add di,9
     sub di,bx
     mov [di],ah
     mov ah,0
     inc bx
     test al,al
     jnz tostringm1
     mov cx,bx
     copy:mov si,di
     mov di,offset string
     repe movsb
     mov byte ptr [di],'$'
     
     ret
     
     NODX db 0
     NOD1 db 0
     NOD2 db 0
     NOD3 db 0
     NOD4 db 0
     NOD5 db 0
     NOD6 db 0
     NOD7 db 0
     NOD8 db 0
     NOD9 db 0
     NOD10 db 0
     
     
     
     string db 10 dup(0)
     db '$'
     
     ax1 db 0
     bx1 db 0
     
     a1 db 11
     b1 db 17
     
     a2 db 16
     b2 db 20
     
     a3 db 30
     b3 db 30
     
     a4 db 22
     b4 db 13
     
     a5 db 20
     b5 db 31
     
     a6 db 31
     b6 db 21
     
     a7 db 53
     b7 db 19
     
     a8 db 91
     b8 db 15
     
     a9 db 20
     b9 db 9
     
     a10 db 14
     b10 db 34
     counter1 db 0ah
     vivoda1 db 0,
     vivodslash db '\'
     vivodb1 db 0,0dh,0ah,'$'
     vivod db 0
     db 0dh,0ah,'$'
     temp db 0
     message db 'hello',0dh,0ah,'$'
     messagetrue db 'Pravilnie drobi:',0dh,0ah,'$'
     messagefalse db 'Ne pravilnie drobi:',0dh,0ah,'$'
     messageNesokratit db 'Ne sokrashaemie drobi:',0dh,0ah,'$'
     messageSokratit db 'Sokrashaemie drobi:',0dh,0ah,'$'
     messageNOD db ' NOD=$'
     messageNocorrect db 'Ne pravilnii format vvoda',0dh,0ah,'$'
     messagePresent db 'Vvedite znachenia 10 drobei cherez probel (34\76 86\34 i t.d.):',0dh,0ah,'$' 
     messageMalo db 'Drobei doljno bit 10',0dh,0ah,'$' 
     messageChislitelBolshe255 db 'Chislitel bolshe 255',0dh,0ah,'$' 
     messageZnamenatelBolshe255 db 'Znamenatel bolshe 255',0dh,0ah,'$' 
     redsymbols db 27,'[1;31m$'
     bluesymbols db 27,'[1;34m$'
     whitesymbols db 27,'[1;37m$'
     greensymbols db 27,'[1;32m$'
     numbersdrobe db 0
     saveindex db 0
     odd db 0
     numdigit db 0
     dig1 db 0
     dig2 db 0
     dig3 db 0
     dig4 db 0
     dig5 db 0
     dig6 db 0
     text ends
     end begin
1
1 / 1 / 0
Регистрация: 14.12.2024
Сообщений: 9
14.12.2024, 11:49
Ипаитовцам салам)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2024, 11:49
Помогаю со студенческими работами здесь

Нахождение наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел
1.Составить программу с использованием процедуры нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных...

Нахождение наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел
Задание. Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел...

Нахождение наибольшего общего делителя и наименьшего общего кратного
Составить программу для нахождения наибольшего общего делителя и наименьшего общего краттного двух натуральных чисел...

Нахождение наибольшего общего делителя и наименьшего общего кратного
Нужно написать программу для нахождения наибольшего общего делителя и наименьшего общего кратного

нахождение наибольшего общего делителя
Памогите п.ж. составить программу,нахождение наибольшего общего делителя и факториала.На турбо Паскале


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru