Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 65

Ввести два 16-битовых целых числа А и В. Вычислить результат логического побитового исключающего ИЛИ чисел 10*

04.06.2017, 21:04. Показов 3488. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите найти ошибку. Все компилируется, но при запуске вылетает с ошибкой.
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
model small
outmsg macro msg ; macros dlya vivoda na ekran
    push eax
    push edx
    mov ah,09h
    lea dx,msg
    int 21h
    pop edx
    pop eax
endm
 
.stack 100h ;zadaem razmer steka
 
.data ;nachalo bloka peremennih
    MSG1 DB "Input A(0..255): ",'$'; zadaem strokovie peremennie
    MSG2 DB "Input B(0..255): ",'$'
    ERROR_MSG DB "Slishkom bolshoe chislo!",'$'
.code ;nachalo bloka koda
.486 
 
calc proc far ;procedura operacii 
    ;vipolnyaem 6*B^2
    mov ecx,eax
    mov eax,ebx
    mul ebx
    mov ebx,eax
    mov eax,6
    mul ebx
    mov ebx,eax
    ; vipolnyaem A*10
    mov eax,10
    mul ecx
    xchg eax,ecx
    ;vipolnyaem pobitovoe logicheskoe ili resultat zanositsya v eax
    xor eax,ebx
calc endp
 
printRes proc    
    test eax,eax 
    jns nsig 
    mov ecx,eax 
    mov ah,02h
    mov dl,'-'
    int 21h
    mov eax,ecx 
    neg eax 
nsig:  
    xor ecx,ecx
    mov ebx,10 
nums:
    xor edx,edx 
    div ebx 
    push edx 
    inc cx 
    test eax,eax 
    jnz nums
    mov ah,02h 
show:
    pop edx 
    add dl,'0' 
    int 21h 
    loop show 
    ret
printRes endp
 
 
MAIN: ;tochka vhoda v programmu
    mov ax,@data ;zadaem adress segmenta dannih
    mov ds,ax
    xor eax,eax ; eax = 0
    xor ebx,ebx ; ebx = 0
    xor ecx,ecx ; ecx = 0
    mov edx,10 ; stepen sistemi ischisleniya 
    outmsg MSG1 ; Daem zapros na A
    
INPUT_A:
    mov ch,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    je NEXT ;perehod k B
    sub cl,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    mul edx ;primenyaem systemy ischisleniya
    add eax,ecx ;dobavlyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_A ;povtoryaem cikl
    
NEXT:
    outmsg MSG2 ; Daem zapros na B
    
INPUT_B:
    mov ch,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    je END_INPUT ;okonchanie vvoda
    sub cl,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    mul edx ;primenyaem systemy ischisleniya
    add ebx,ecx ;dobavleyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_B ;povtoryaem cikl    
 
END_INPUT:
 
    cmp eax,255 ;proverka na dopustimost znacheniya
    ja ERROR
    cmp ebx,255 ;proverka na dopustimost znacheniya
    ja ERROR
    
    call calc
 
ERROR:
    outmsg ERROR_MSG
    jmp EXIT    
 
EXIT:
    mov ax,4c00h
    int 21h    
end MAIN
Заранее спасибо)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2017, 21:04
Ответы с готовыми решениями:

Процедуры: вычислить результат логического побитового исключающего Или
Помогите пожалуйста с такой задачей: Ввести два 16-битовых целых числа А и В. Вычислить результат логического побитового исключающего ИЛИ...

Ввести два 16-битовых целых числа А и В. Вычислить значение выражения: А^3 - В^2
Ввести два 16-битовых целых числа А и В. Вычислить значение выражения: А^3 - В^2. Программа 1. Передача параметров через регистр. Тип...

Операция побитового исключающего ИЛИ
Ввести в консоли строку из пяти символов, а затем произвести над каждым символом операцию побитового исключающего ИЛИ (XOR – в C++ ^) со...

27
30 / 30 / 8
Регистрация: 18.03.2013
Сообщений: 43
04.06.2017, 21:11
Assembler
1
model small
Либо Вы скопировали без точки, либо у Вас ничего не должно скомпилироваться.

Правильно:
Assembler
1
.model small
Но проблема не в этом.
Проблема вот в чём:
Assembler
1
2
INPUT_A:
    mov ch,01h;vvod s klaviaturi
Номер функции необходимо указывать в регистре AH

Правильно:
Assembler
1
2
INPUT_A:
    mov ah,01h;vvod s klaviaturi
Аналогичная петрушка и в INPUT_B.

Поправьте и отпишитесь о результате
1
1 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 65
04.06.2017, 22:05  [ТС]
указанную ошибку исправил. немного упростил весь код
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
model small
outmsg macro msg ; macros dlya vivoda na ekran
    push eax
    push edx
    mov ah,09h
    lea dx,msg
    int 21h
    pop edx
    pop eax
endm
 
.stack 100h ;zadaem razmer steka
 
.data ;nachalo bloka peremennih
    MSG1 DB "Input A(0..255): "; zadaem strokovie peremennie
    MSG2 DB "Input B(0..255): "
.code ;nachalo bloka koda
.486 
 
calc proc far ;procedura operacii 
     ; v ecx - B
     ;v ebx - A
    ;vipolnyaem 6*B^2
    mov eax,ecx; zanosim B v eax
    mul ecx ;umnojaem B na B
    mov ecx,eax ;vozvrashaem resultat v ecx
    mov eax,6 ;zanosim 6 v eax
    mul ecx ;umnojaem B^ na 6
    mov ecx,eax ;vozvrashaem resultat 6*B^2
    ; vipolnyaem A*10
    mov eax,10 ;zanosim v eax 10
    mul ebx ;umnojaem A na 10
    mov ecx,eax ;vozvrashaem resultat   
    xor ecx,ebx  ;vipolnyaem pobitovoe logicheskoe ili resultat zanositsya v ecx
    mov eax,ecx ;zanosim resultat v eax
    call printRes
calc endp
 
printRes proc    
    test eax,eax 
    jns nsig 
    mov ecx,eax 
    mov ah,02h
    mov dl,'-'
    int 21h
    mov eax,ecx 
    neg eax 
nsig:  
    xor ecx,ecx 
    mov ebx,10 
nums:
    xor edx,edx 
    div ebx 
    push edx 
    inc cx 
    test eax,eax 
    jnz nums 
    mov ah,02h 
show:
    pop edx 
    add dl,'0' 
    int 21h 
    loop show 
    ret
printRes endp
 
MAIN: ;tochka vhoda v programmu
    mov ax,@data ;zadaem adress segmenta dannih
    mov ds,ax
    xor eax,eax ; eax = 0
    xor ebx,ebx ; ebx = 0
    xor ecx,ecx ; ecx = 0
    mov edx,10 ; stepen sistemi ischisleniya 
    outmsg MSG1 ; Daem zapros na A
    mov al,0ah ; perevod na novuyu stroku
    
INPUT_A:
    mov ah,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    je NEXT ;perehod k B
    sub al,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    xchg eax,ecx ; menyaem znacheniya mestami
    mul edx ;primenyaem systemy ischisleniya
    add ecx,eax ;dobavlyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_A ;povtoryaem cikl
    
NEXT:
    mov ebx,ecx ;zanosim v ebx polnoe znachenie A
    xor ecx,ecx ;ochishaem ecx
    outmsg MSG2 ; Daem zapros na B
    mov al,0ah ; perevod na novuyu stroku
    
INPUT_B:
    mov ah,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    je END_INPUT ;okonchanie vvoda
    sub al,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    xchg eax,ecx ; menyaem znacheniya mestami
    mul edx ;primenyaem systemy ischisleniya
    add ecx,eax ;dobavlyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_B ;povtoryaem cikl    
 
END_INPUT:
    call calc 
end MAIN

теперь программа запускается, но выдает абракадабру, подозреваю, что я начудил с возвратом каретки, но не могу понять где ошибка на этот раз)
Миниатюры
Ввести два 16-битовых целых числа А и В. Вычислить результат логического побитового исключающего ИЛИ чисел 10*  
0
30 / 30 / 8
Регистрация: 18.03.2013
Сообщений: 43
04.06.2017, 22:12
Вот здесь

Assembler
1
2
    MSG1 DB "Input A(0..255): "; zadaem strokovie peremennie
    MSG2 DB "Input B(0..255): "
Требование функции 09h (выдача строки) - выводимая строка должна оканчиваться символом $

Правильно будет так:

Assembler
1
2
    MSG1 DB "Input A(0..255): $"; zadaem strokovie peremennie
    MSG2 DB "Input B(0..255): $"
2
1 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 65
05.06.2017, 14:45  [ТС]
да, действительно. Но почему то вот этот код не переводит строку.
Assembler
1
mov al,0ah ; perevod na novuyu stroku
Что не так с ним?

Добавлено через 1 час 15 минут
проблему выше решил, появилась следующая
программа не выдает результат. или не считает вообще или же проблемы с выводом)

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
model small
outmsg macro msg ; macros dlya vivoda na ekran
    push eax
    push edx
    mov ah,09h
    lea dx,msg
    int 21h
    pop edx
    pop eax
endm
 
.stack 100h ;zadaem razmer steka
 
.data ;nachalo bloka peremennih
    MSG1 DB "Input A(0..255): $"; zadaem strokovie peremennie
    MSG2 DB "Input B(0..255): $"
.code ;nachalo bloka koda
.486 
 
calc proc far ;procedura operacii 
     ; v di - A
     ;v si - B
    ;vipolnyaem 6*B^2
    mov ax,si; zanosim B v al
    mul si ;umnojaem B na B
    mov si,ax ;vozvrashaem resultat v si
    mov al,6 ;zanosim 6 v al
    mul si ;umnojaem B^2 na 6
    mov si,ax ;vozvrashaem resultat 6*B^2
    ; vipolnyaem A*10
    mov al,10 ;zanosim v al 10
    mul dl ;umnojaem A na 10
    mov di,ax ;vozvrashaem resultat   
    xor di,si  ;vipolnyaem pobitovoe logicheskoe ili resultat zanositsya v di
    mov ax,di ; otpravlyaem resultat v ax
    call print
calc endp
 
print proc  ;pechataet soderjimoe di
    push ax
    push cx
    push dx
    push bx
    xor cx,cx               ;Обнуление CX
    mov bx,10               ;В BX делитель (10 для десятичной системы)
 
wtuds_lp1:                  ;Цикл получения остатков от деления
    xor dx,dx               ;Обнуление старшей части двойного слова
    div bx                  ;Деление AX=(DX:AX)/BX, остаток в DX
    add dl,'0'              ;Преобразование остатка в код символа
    push dx                 ;Сохранение в стеке
    inc cx                  ;Увеличение счетчика символов
    test ax,ax              ;Проверка AX
    jnz wtuds_lp1           ;Переход к началу цикла, если частное не 0.
 
wtuds_lp2:                  ;Цикл извлечения символов из стека
    pop dx                  ;Восстановление символа из стека
    mov [di],dl             ;Сохранение символа в буфере
    inc di                  ;Инкремент адреса буфера
    loop wtuds_lp2          ;Команда цикла
 
    pop bx
    pop dx
    pop cx
    pop ax
    ret
print endp
 
 
MAIN: ;tochka vhoda v programmu
    mov ax,@data ;zadaem adress segmenta dannih
    mov ds,ax
    xor eax,eax ; eax = 0
    xor ebx,ebx ; ebx = 0
    xor ecx,ecx ; ecx = 0
    mov dx,10 ; stepen sistemi ischisleniya 
    outmsg MSG1 ; Daem zapros na A
    mov ax,0ah ; perevod na novuyu stroku
    
INPUT_A:
    mov ah,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    cmp al,13
    je NEXT ;perehod k B
    sub ax,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    xchg ax,cx ; menyaem znacheniya mestami
    mul dx ;primenyaem systemy ischisleniya
    add cx,ax ;dobavlyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_A ;povtoryaem cikl
    
NEXT:
    mov di,cx ;zanosim v di polnoe znachenie A
    xor ecx,ecx ;ochishaem ecx
    outmsg MSG2 ; Daem zapros na B
    mov al,0ah ; perevod na novuyu stroku
    
INPUT_B:
    mov ah,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    cmp al,13
    je END_INPUT ;okonchanie vvoda
    sub ax,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    xchg ax,cx ; menyaem znacheniya mestami
    mul dx ;primenyaem systemy ischisleniya
    add cx,ax ;dobavlyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_B ;povtoryaem cikl    
 
END_INPUT:
    mov si,cx ;zanosim v si polnoe znachenie A
    call calc 
end MAIN
Добавлено через 11 минут
переписал процедуру для вывода на экран - заработало, надеюсь правильно)

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
model small
outmsg macro msg ; macros dlya vivoda na ekran
    push eax
    push edx
    mov ah,09h
    lea dx,msg
    int 21h
    pop edx
    pop eax
endm
 
.stack 100h ;zadaem razmer steka
 
.data ;nachalo bloka peremennih
    MSG1 DB "Input A(0..255): $"; zadaem strokovie peremennie
    MSG2 DB "Input B(0..255): $"
.code ;nachalo bloka koda
.486 
 
calc proc far ;procedura operacii 
     ; v di - A
     ;v si - B
    ;vipolnyaem 6*B^2
    mov ax,si; zanosim B v al
    mul si ;umnojaem B na B
    mov si,ax ;vozvrashaem resultat v si
    mov al,6 ;zanosim 6 v al
    mul si ;umnojaem B^2 na 6
    mov si,ax ;vozvrashaem resultat 6*B^2
    ; vipolnyaem A*10
    mov al,10 ;zanosim v al 10
    mul dl ;umnojaem A na 10
    mov di,ax ;vozvrashaem resultat   
    xor di,si  ;vipolnyaem pobitovoe logicheskoe ili resultat zanositsya v di
    mov ax,di ; otpravlyaem resultat v ax
    call print
calc endp
 
print proc  ;pechataet soderjimoe ax
    test eax,eax ; eax < 0 ?
    jns nsig ; chislo polojitelnoe - sohranyaem znachenie, esli otricatelnoe stavim simvol -
    mov ecx,eax     
    mov ah,02h
    mov dl,'-'
    int 21h
    mov eax,ecx ; vosstanavlivaem znachenie
    neg eax ; menyaem znak
nsig:  
    xor ecx,ecx ; ecx = 0
    mov ebx,10 ; sistema schisleniya
nums:
    xor edx,edx ; edx = 0
    div ebx ; chasnoe i ostatok
    push edx ; ostatol v stek
    inc cx ; schitaem kolichestvo cifr
    test eax,eax ; eax = 0 ?
    jnz nums ; prodoljaem videlyat cifri chisla
    mov ah,02h ; vivod simvol
show:
    pop edx ; dostaem is steka
    add dl,'0' ; perevodim simvol
    int 21h ; vivodim na ekran
    loop show ; poka cx > 0 pechataem cifri
    ret
print endp
 
 
MAIN: ;tochka vhoda v programmu
    mov ax,@data ;zadaem adress segmenta dannih
    mov ds,ax
    xor eax,eax ; eax = 0
    xor ebx,ebx ; ebx = 0
    xor ecx,ecx ; ecx = 0
    mov dx,10 ; stepen sistemi ischisleniya 
    outmsg MSG1 ; Daem zapros na A
    mov ax,0ah ; perevod na novuyu stroku
    
INPUT_A:
    mov ah,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    cmp al,13
    je NEXT ;perehod k B
    sub ax,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    xchg ax,cx ; menyaem znacheniya mestami
    mul dx ;primenyaem systemy ischisleniya
    add cx,ax ;dobavlyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_A ;povtoryaem cikl
    
NEXT:
    mov di,cx ;zanosim v di polnoe znachenie A
    xor ecx,ecx ;ochishaem ecx
    outmsg MSG2 ; Daem zapros na B
    mov al,0ah ; perevod na novuyu stroku
    
INPUT_B:
    mov ah,01h;vvod s klaviaturi
    int 21h  ;prerivanie
    cmp al,13
    je END_INPUT ;okonchanie vvoda
    sub ax,30h ;perevodim simvol v chislo
    cbw ;rasshiryaem do word
    xchg ax,cx ; menyaem znacheniya mestami
    mul dx ;primenyaem systemy ischisleniya
    add cx,ax ;dobavlyaem vvedennuyu cifru k predidushemy chislu
    jmp INPUT_B ;povtoryaem cikl    
 
END_INPUT:
    mov si,cx ;zanosim v si polnoe znachenie A
    call calc 
end MAIN
0
Terminator of naked apes
 Аватар для KyberMax
832 / 139 / 34
Регистрация: 13.02.2015
Сообщений: 328
05.06.2017, 16:53
Цитата Сообщение от xolyspirit Посмотреть сообщение
...заработало, надеюсь правильно)
Даже и не надейся - неправильно: Stas_Godfrey почему-то не заметил гораздо более важные вещи, например ;о):

1. Пропущена команда возврата из процедуры calc (которая зачем-то ещё и far ;о)
2. Нет выхода в DOS.

В общем, если это и выдаёт что-то на экран, то это чудо (сотворённое мощами св.Деда Мороза, например ;о)
2
1 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 65
05.06.2017, 18:14  [ТС]
Да результат был явно неправильный....) Путем долгих переделываний всего подряд, программа выглядит вот так:
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
.model small                ;model pamati small
outmsg macro msg
    push eax
    push edx
    mov ah,09h
    lea dx,msg
    int 21h
    pop edx
    pop eax
endm
.stack 256              ;stek zanimaet 256 baitov
.data                   ;segment dannyh
    Mess1     db 'Vvedite chislo A (-181..+181): $'
    Mess2     db 'Vvedite chislo B (-181..+181): $'
    Exit_Mess db 10,13,'Nazhmite lubuju klavishu...$'
    MSG_ERR_NUM DB 10,13,"Incorrect number!$"
    B dw ?
    String      db  5 dup (?),'$'  ; Резервируем 5 байт для строки
    StringEnd   =   $-1            ; Указывает на символ '$'
.code  
.486             
    ;procedura vychislaet 6*B^2  i A*10
   ; Znachenie B peredaetsa cherez registr sp
   ; Znachenie A peredaetsa cherez registr bp
;Rezultat vychislenij peredaetsa cherez registr ax.
calc proc far
    mov ax,sp; zanosim B v ax
   mul sp ;umnojaem B na B
   mov sp,ax ;vozvrashaem resultat v sp
   mov ax,6 ;zanosim 6 v ax
    mul sp ;umnojaem B^2 na 6
   mov sp,ax ;vozvrashaem resultat 6*B^2
   ;vipolnyaem A*10
    mov ax,10 ;zanosim v al 10
    mul bp ;umnojaem A na 10
    mov bp,ax ;vozvrashaem resultat   
    xor bp,sp  ;vipolnyaem pobitovoe logicheskoe ili resultat zanositsya v di
     mov ax,bp ; otpravlyaem resultat v ax
 
    call print
    ret
calc endp
 
;procedura vyvodit chislo iz registra ax na ekran
print proc  ;pechataet soderjimoe ax
        Start:
 
        std                    ; Устанавливаем ОБРАТНЫЙ порядок записи
        lea di,StringEnd-1 ; ES:DI = последний символ строки String
 
; Начинаем перевод числа AX в строку
        mov cx,10          ; Задаемся делителем CX = 10
Repeat:
        xor dx,dx          ; Обнуляем DX (для деления)
        div cx             ; Делим DX:AX на CX (10),
                                       ; Получаем в AX частное, в DX остаток
        xchg    ax,dx          ; Меняем их местами (нас интересует остаток)
        add al,'0'         ; Получаем в AL символ десятичной цифры
        stosb                  ; И записываем ее в строку
        xchg    ax,dx          ; Восстанавливаем AX (частное)
        or  ax,ax          ; Сравниваем AX с 0
        jne Repeat         ; Если не ноль, то повторяем
 
; Теперь осталось вывести строку на экран
        mov ah,9
        lea dx,[di+1]      ; Заносим в DX адрес начала строки
        int 21h            ; Выводим ее на экран 
        ret    
print endp
    
InputInt proc 
INPUT: ; ввод числа с клавиатуры
    mov ah,01h
    int 21h
    cmp al,13
    je done ; 'enter' - завершаем ввод
    ; проверка символа на корректность
    cmp al,30h
    jl ERROR_NUM ; символ не является цифрой
    cmp al,39h
    ja ERROR_NUM ; символ не является цифрой
    sub al,30h ; переводим символ в число
    cbw ; расширяем до слова
    xchg ax,cx ; обмен значениями
    mul bx ; предыдущее значение умножаем на 10
    add cx,ax ; добавляем введенную цифру к числу
    jmp INPUT ; продолжаем ввод
ERROR_NUM:
    ; ошибка при вводе числа
    outmsg MSG_ERR_NUM
    jmp exit
done:
     ret
InputInt endp
main:                   ;tochka vhoda v programmu
    mov ax,@data        ;zanesenie adresa segmenta dannyh v ax
    mov ds,ax           ;kopiruem ax v ds   
    mov bx,10
    outmsg Mess1
    call InputInt
    mov sp,cx 
    outmsg Mess2
    call InputInt
    mov bp,cx    
    call calc
exit:
    lea dx,Exit_Mess        ;v dx zanosim smeschenie Exit_Mess
    mov ah,09h          ;v ah zanosim 9 funkciju DOS    
    int 21h             ;vyzov preryvanija 21h
    ;ozhidanie nazhatija klavishi
    mov ah,00h          ;v ah zanosim funkciju 00h  
    int 16h             ;vyzov preryvanija 16h
    ;vyhod iz programmy  
    mov ah,4ch          ;v ah zanosim funkciju 4Ch DOS  
    int 21h             ;vyzov preryvanija 21h     
 
end main                ;konec programmy main
Дальний вызов процедуры, так как так указано в задании.
Через регистры передаю, так как это тоже указано в задании.
Неуверен, что я корректно обращаюсь с регистрами:
Assembler
1
2
3
4
5
call InputInt
    mov sp,cx 
    outmsg Mess2
    call InputInt
    mov bp,cx
Все по прежнему не работает) дальше передачи данных в программу дело не идет.

Добавлено через 11 минут
изменил процедуру вывода на экран:
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
  push    ax
        push    bx
        push    cx
        push    dx
        push    di
 
        ;mov     cx, 10          ; cx - основание системы счисления
        xor     di, di          ; di - кол. цифр в числе
 
@@Conv:
        xor     dx, dx
        div     cx              ; dl = num mod 10
        add     dl, '0'         ; перевод в символьный формат
        inc     di
        push    dx              ; складываем в стэк
        or      ax, ax
        jnz     @@Conv
        ; выводим из стэка на экран
@@Show:
        pop     dx              ; dl = очередной символ
        mov     ah, 2           ; ah - функция вывода символа на экран
        int     21h
        dec     di              ; повторяем пока di<>0
        jnz     @@Show
 
        pop     di
        pop     dx
        pop     cx
        pop     bx
        pop     ax
        ret
Программа начала работать. Похоже правильно, но как проверить я хз)
0
Terminator of naked apes
 Аватар для KyberMax
832 / 139 / 34
Регистрация: 13.02.2015
Сообщений: 328
05.06.2017, 21:43
Цитата Сообщение от xolyspirit Посмотреть сообщение
Неуверен, что я корректно обращаюсь с регистрами:
Assembler
1
2
3
4
5
call InputInt
 mov sp,cx 
 outmsg Mess2
 call InputInt
 mov bp,cx
Оно не просто некорректное - оно чудовищное. Такое впечатление, что перед тобой список регистров и ты их выбираешь и используешь наугад (что какбе намекае нам, что процессор ты не знаешь так же, как и Асм, например ;о) А то, что процедуру print ты вызываешь из процедуры calc - что не знаешь и элементарных принципов программирования.
0
1 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 65
06.06.2017, 09:38  [ТС]
Спасибо за критику, хотелось бы конечно больше конструктива. Я действительно не знаю толком процессор и Асм. И действительно использую регистры наугад. Именно наугад перебирая регистры, в итоге все правильно заработало.
Проверить выполнение можно задав А=15 и В=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
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
.model small                ;model pamati small
outmsg macro msg
    push eax
    push edx
    mov ah,09h
    lea dx,msg
    int 21h
    pop edx
    pop eax
endm
.stack 256              ;stek zanimaet 256 baitov
.data                   ;segment dannyh
    Mess1     db 'Vvedite chislo A (-224..+225): $'
    Mess2     db 'Vvedite chislo B (-224..+225): $'
    Exit_Mess db 10,13,'Nazhmite lubuju klavishu...$'
    error db "incorrect number$"
    buff    db 6,7 Dup(?)
.code  
.486             
    ;procedura vychislaet 6*B^2  i A*10
    ; Znachenie B peredaetsa cherez registr bx
    ; Znachenie A peredaetsa cherez registr bp
;Rezultat vychislenij peredaetsa cherez registr ax.
calc proc far
    mov ax,bx; zanosim B v ax
    mul bx ;umnojaem B na B
    mov bx,ax ;vozvrashaem resultat v bx
    mov ax,6 ;zanosim 6 v ax
    mul bx ;umnojaem B^2 na 6
    mov bx,ax ;vozvrashaem resultat 6*B^2
   ;vipolnyaem A*10
    mov ax,10 ;zanosim v ax 10
    mul bp ;umnojaem A na 10
    mov bp,ax ;vozvrashaem resultat  
    xor bp,bx  ;vipolnyaem pobitovoe logicheskoe ili resultat zanositsya v bp
    mov ax,bp ; otpravlyaem resultat v ax
    ret
calc endp
 
;procedura vyvodit chislo iz registra ax na ekran
prints proc  ;pechataet soderjimoe ax
      mov cx,10         ;v cx zanosim delitel 10
    xor di,di           ;ochistka di (kolichestvo cifr v chisle)
    ;esli ax<0, to pechataem '-' i delaem ax polozhitelnym 
    or ax,ax            ;proveraem ax
    jns conv            ;esli ax>0 (SF=0), to perehod na metku conv
    push ax             ;pomeschaem ax v stek
    mov dx,'-'          ;zanosim v dx '-'
    mov ah,2                ;vyvod '-' na ekran
    int 21h
    pop ax              ;vosstanavlivaem ax
    neg ax              ;delaem ax polozhitelnym
 conv:
    xor dx,dx           ;ochistka dx
    div cx                      ;dl = ax mod 10, 
    add dl,'0'          ;perevodim ostatok v simvol
    inc di              ;uvelichivaem kolichestvo cifr v chisle na 1
    push dx                     ;ostatok pomeschaem v stek
    or ax,ax            ;proveraem ax (chastnoe)
    jnz conv            ;esli ax<>0, to perehod na metku conv
                    ;i povtoraem delenie
    ;vyvod cifr iz steka na ekran
print:
    pop dx              ;izvlekaem iz steka ocherednoj simvol
    mov ah,2            ;vyvodim ego na ekran
    int 21h
    dec di              ;umenshaem schetchik cifr
    jnz print           ;esli di<>0 (ZF=0), to perehod na metku print
                    ;i povtoraem pechat' simvola
    ret             ;vyhod iz procedury          
    prints endp
    
InputInt proc 
INPUT: ; vvod chisla  s klaviaturi
mov ah,0ah
    xor di,di
    mov dx,offset buff ; adres bufera
    int 21h ; prinimaem stroku
    mov dl,0ah
    mov ah,02
    int 21h ; vivodim perevodya stroku
    
    ; obrabativaem bufer
    mov si,offset buff+2 ; berem adres nacala stroki
    cmp byte ptr [si],"-" ; esli perviy simvol -
    jnz ii1
    mov di,1  ; ustanavlivaem flag
    inc si    ; i propuskaem
ii1:
    xor ax,ax
    mov bx,10  ; osnovanie
ii2:
    mov cl,[si] ; berem simvol is bufera
    cmp cl,0dh  ; provaryaem ne posledniy li on
    jz endin
    
    ; esli ne posledniy ti proveryaem na pravilnost
    cmp cl,'0'  ; esli vvedenniy simvol <0
    jb er
    cmp cl,'9'  ; esli vvedenniy simvol >9
    ja er
 
    sub cl,'0' ; perevodim v chislo
    mul bx     ; umnojaem na 10
    add ax,cx  ; dobavlyaem k ostalnim
    inc si     ; ukazatel na sleduyushiy simvol
    jmp ii2     ; povtoryaem
 
    er:   ; esli bila oshibka to soobshaem i vihodim
    mov dx, offset error
    mov ah,09
    int 21h
    int 20h
 
    ; vse simvoli obrabotani chislo nahoditsya v ax
endin:
    cmp di,1 ; esli ustanovlen flag to
    jnz ii3
    neg ax   ; delaem chislo otricatelnim
ii3:
    ret
InputInt endp
main:                   ;tochka vhoda v programmu
    mov ax,@data        ;zanesenie adresa segmenta dannyh v ax
    mov ds,ax           ;kopiruem ax v ds   
    mov dx,10
    outmsg Mess1
    call InputInt
    mov bp,ax 
    outmsg Mess2
    call InputInt
    xor bx,bx
    mov bx,ax    
    call calc
    call prints
    jmp exit
exit:
    lea dx,Exit_Mess        ;v dx zanosim smeschenie Exit_Mess
    mov ah,09h          ;v ah zanosim 9 funkciju DOS    
    int 21h             ;vyzov preryvanija 21h
    ;ozhidanie nazhatija klavishi
    mov ah,00h          ;v ah zanosim funkciju 00h  
    int 16h             ;vyzov preryvanija 16h
    ;vyhod iz programmy  
    mov ah,4ch          ;v ah zanosim funkciju 4Ch DOS  
    int 21h             ;vyzov preryvanija 21h     
 
end main                ;konec programmy main
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
06.06.2017, 09:43
Цитата Сообщение от Stas_Godfrey Посмотреть сообщение
Либо Вы скопировали без точки, либо у Вас ничего не должно скомпилироваться.
Tasm, это за ошибку не считает.
1
 Аватар для vioup
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 55
22.08.2017, 09:41
Цитата Сообщение от xolyspirit Посмотреть сообщение
В дальнейших версиях программы, все поменял.
Так программа все равно сделана неправильно. 16-битовые числа она не принимает, от них программа вылетает. А принимает только десятичные.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8663 / 4500 / 1670
Регистрация: 01.02.2015
Сообщений: 13,921
Записей в блоге: 13
22.08.2017, 10:40
Программа написана правильно, если её принимает заказчик (преподаватель).

А это какой-то набор бессмысленных слов
Цитата Сообщение от vioup Посмотреть сообщение
16-битовые числа она не принимает, от них программа вылетает. А принимает только десятичные.
Ближайший эквивалент этого:
в духовке этой печи невозможно печь 16-килограммовые торты, а можно только с яблочной начинкой.

16-битовые - размер регистра, адресуемой ячейки памяти
десятичные - основание системы счисления, используемое для символьного отображения числа, хранящегося в ячейке памяти

Если уверены в неправильной работе программы - пробуйте исправить, т.к. ТС (топикстартер) xolyspirit после сдачи зачёта потерял интерес к теме и ничего не будет исправлять.
0
 Аватар для vioup
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 55
22.08.2017, 10:48
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
после сдачи зачёта
С чего вы это взяли? Может быть его отправили на осеннюю пересдачу?

Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
и ничего не будет исправлять
Может быть он уже всё исправил, но на форуме об этом не написал, у вас такой мысли не возникает?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8663 / 4500 / 1670
Регистрация: 01.02.2015
Сообщений: 13,921
Записей в блоге: 13
22.08.2017, 11:16
Я прочитал половину книг цикла "Песнь льда и пламени" ("Игра престолов") - вера в людей подорвана. Ваша надежда
Цитата Сообщение от vioup Посмотреть сообщение
С чего вы это взяли? Может быть его отправили на осеннюю пересдачу?
лишнее тому подтверждение.

Может быть всё-таки попробуете самостоятельно исправить программу (оживить драконов и завоевать Вестерос)?
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
22.08.2017, 11:56
Цитата Сообщение от vioup Посмотреть сообщение
С чего вы это взяли? Может быть его отправили на осеннюю пересдачу?
Обычно ТС, так не ведут, а продолжают мусолить тему, до окончания.
Поэтому повторю реплику Павла.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
после сдачи зачёта потерял интерес к теме
0
1 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 65
22.08.2017, 14:25  [ТС]
Все сдано. все работает как нужно
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8663 / 4500 / 1670
Регистрация: 01.02.2015
Сообщений: 13,921
Записей в блоге: 13
22.08.2017, 14:42
xolyspirit, у одного из пользователей (vioup) возник вопрос
Цитата Сообщение от vioup Посмотреть сообщение
Может быть он уже всё исправил, но на форуме об этом не написал,
Если Вам не сложно, опубликуйте крайнюю версию этой программы.
0
1 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 65
24.08.2017, 11:01  [ТС]
Честно говоря не помню, менял ли я в ней что-то после того как выложил. Но вот та версия которую преподаватель принял.

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
.model small ;model pamati small
outmsg macro msg
push eax
push edx
mov ah,09h
lea dx,msg
int 21h
pop edx
pop eax
endm
.stack 256 ;stek zanimaet 256 baitov
.data ;segment dannyh
Mess1 db 'Vvedite chislo A (-224..+225): $'
Mess2 db 'Vvedite chislo B (-224..+225): $'
Exit_Mess db 10,13,'Nazhmite lubuju klavishu...$'
error db "incorrect number$"
buff db 6,7 Dup(?)
.code 
.486 
;procedura vychislaet 6*B^2 i A*10
; Znachenie B peredaetsa cherez registr bx
; Znachenie A peredaetsa cherez registr bp
;Rezultat vychislenij peredaetsa cherez registr ax.
calc proc far
mov ax,bx; zanosim B v ax
mul bx ;umnojaem B na B
mov bx,ax ;vozvrashaem resultat v bp
mov ax,6 ;zanosim 6 v ax
mul bx ;umnojaem B^2 na 6
mov bx,ax ;vozvrashaem resultat 6*B^2
;vipolnyaem A*10
mov ax,10 ;zanosim v ax 10
mul bp ;umnojaem A na 10
mov bp,ax ;vozvrashaem resultat 
xor bp,bx ;vipolnyaem pobitovoe logicheskoe ili resultat zanositsya v di
mov ax,bp ; otpravlyaem resultat v ax
 
call prints
ret
calc endp
 
;procedura vyvodit chislo iz registra ax na ekran
prints proc ;pechataet soderjimoe ax
mov cx,10 ;v cx zanosim delitel 10
xor di,di ;ochistka di (kolichestvo cifr v chisle)
;esli ax<0, to pechataem '-' i delaem ax polozhitelnym 
or ax,ax ;proveraem ax
jns conv ;esli ax>0 (SF=0), to perehod na metku conv
push ax ;pomeschaem ax v stek
mov dx,'-' ;zanosim v dx '-'
mov ah,2 ;vyvod '-' na ekran
int 21h
pop ax ;vosstanavlivaem ax
neg ax ;delaem ax polozhitelnym
conv:
xor dx,dx ;ochistka dx
div cx ;dl = ax mod 10, 
add dl,'0' ;perevodim ostatok v simvol
inc di ;uvelichivaem kolichestvo cifr v chisle na 1
push dx ;ostatok pomeschaem v stek
or ax,ax ;proveraem ax (chastnoe)
jnz conv ;esli ax<>0, to perehod na metku conv
;i povtoraem delenie
;vyvod cifr iz steka na ekran
print:
pop dx ;izvlekaem iz steka ocherednoj simvol
mov ah,2 ;vyvodim ego na ekran
int 21h
dec di ;umenshaem schetchik cifr
jnz print ;esli di<>0 (ZF=0), to perehod na metku print
;i povtoraem pechat' simvola
ret ;vyhod iz procedury 
prints endp
InputInt proc 
INPUT: ; vvod chisla s klaviaturi
mov ah,0ah
xor di,di
mov dx,offset buff ; adres bufera
int 21h ; prinimaem stroku
mov dl,0ah
mov ah,02
int 21h ; vivodim perevodya stroku
; obrabativaem bufer
mov si,offset buff+2 ; berem adres nacala stroki
cmp byte ptr [si],"-" ; esli perviy simvol -
jnz ii1
mov di,1 ; ustanavlivaem flag
inc si ; i propuskaem
ii1:
xor ax,ax
mov bx,10 ; osnovanie
ii2:
mov cl,[si] ; berem simvol is bufera
cmp cl,0dh ; provaryaem ne posledniy li on
jz endin
; esli ne posledniy ti proveryaem na pravilnost
cmp cl,'0' ; esli vvedenniy simvol <0
jb er
cmp cl,'9' ; esli vvedenniy simvol >9
ja er
sub cl,'0' ; perevodim v chislo
mul bx ; umnojaem na 10
add ax,cx ; dobavlyaem k ostalnim
inc si ; ukazatel na sleduyushiy simvol
jmp ii2 ; povtoryaem
er: ; esli bila oshibka to soobshaem i vihodim
mov dx, offset error
mov ah,09
int 21h
int 20h
; vse simvoli obrabotani chislo nahoditsya v ax
endin:
cmp di,1 ; esli ustanovlen flag to
jnz ii3
neg ax ; delaem chislo otricatelnim
ii3:
ret
InputInt endp
main: ;tochka vhoda v programmu
mov ax,@data ;zanesenie adresa segmenta dannyh v ax
mov ds,ax ;kopiruem ax v ds 
mov dx,10
outmsg Mess1
call InputInt
mov bp,ax 
outmsg Mess2
call InputInt
xor bx,bx
mov bx,ax 
call calc
jmp exit
exit:
lea dx,Exit_Mess ;v dx zanosim smeschenie Exit_Mess
mov ah,09h ;v ah zanosim 9 funkciju DOS 
int 21h ;vyzov preryvanija 21h
;ozhidanie nazhatija klavishi
mov ah,00h ;v ah zanosim funkciju 00h 
int 16h ;vyzov preryvanija 16h
;vyhod iz programmy 
mov ah,4ch ;v ah zanosim funkciju 4Ch DOS 
int 21h ;vyzov preryvanija 21h 
end main ;konec programmy main
1
 Аватар для vioup
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 55
25.08.2017, 20:53
Сейчас напишу немного "лирики", не касающейся ТС'а, которому эту задачу уже зачли, а для тех, кому будет интересно разобрать это задание.

Строки
Цитата Сообщение от xolyspirit Посмотреть сообщение
cmp cl,'0' ; esli vvedenniy simvol <0
jb er
cmp cl,'9' ; esli vvedenniy simvol >9
ja er
(97-100)
не имеют смысла, потому что, если допустить какую-либо ошибку во время ввода числа, то программа не будет ничего проверять, а просто вылетит. Я много чего уже попробовал ввести, но она либо считает, либо вылетает.
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
28.08.2017, 09:26
Цитата Сообщение от vioup Посмотреть сообщение
Я много чего уже попробовал ввести, но она либо считает, либо вылетает.
Так и задумано, ввели неправильно - получили сообщение incorrect number, и начинайте сначала. Единственное, что можно добавить, что программы этой модели памяти, должны завершатся строками 140:141, а не так как в строке 110(это для СОМ-файлов).


А Вы не пробовали, перепробовать эту тему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.08.2017, 09:26
Помогаю со студенческими работами здесь

Через указатели. Ввести два целых числа. Вычислить сумму, разность и деление этих чисел
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; int main() { int a,b,*p1,*p2,*p3; float *p4; puts(&quot;Ввести 2 целых числа:\n&quot;); ...

Ввести два целых числа и посчитать результат деления
Суть задания в след: программа просит пользователя ввести два целых числа и выводит на экран результаты деления первого на второе и второго...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru