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

Вычислить кусочечную функцию

30.11.2020, 13:50. Показов 1623. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Очень нужно сделать, вообще ничего по ассемблеру не понимаю, помогите пожалуйста. Надо написать на ассемблере, задание во вложении
Миниатюры
Вычислить кусочечную функцию  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2020, 13:50
Ответы с готовыми решениями:

Вычислить кусочечную функцию
Здравствуйте. Возможно у кого-то есть примеры с разветвлениями на MASM, самостоятельно никак не...

Вычислить кусочечную функцию
В скриншоте условие! "Создать программу для вычисления функции" на Ассемблер!

Вычислить кусочечную функцию
Ассемблер. Помогите решить, пожалуйста

Вычислить кусочечную функцию
Ребята, срочно нужно сделать одну задачу на ассемблере. Задача на условие, сам учу C++, там просто...

3
Модератор
1181 / 616 / 282
Регистрация: 10.11.2019
Сообщений: 1,296
30.11.2020, 15:59 2
Лучший ответ Сообщение было отмечено Dron66 как решение

Решение

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
     .model small
     .code
     assume ds:_text
start:  jmp beg
 
sign    db 0
varA    dw 0
varB    dw 0
tmp1    dw 0
tmp2    dw 0
 
printchar:
    push ax
    push dx
    mov dl,al ; печать символа al
    mov ah,2
    int 21h
    pop dx
    pop ax
    ret
 
 
newline: ; печать новой строки
    push ax
    mov al,13
    call printchar
    mov al,10
    call printchar
    pop ax
    ret
 
    ; Вывод строки (макрокоманда)
echonl macro txt
     local m1,m2
     jmp short m2
m1   db txt
     db 13,10
     db "$"
m2:  push ax
     push dx
     mov dx,offset m1
     mov ah,9
     int 21h
     pop dx
     pop ax
     endm
 
echo macro txt
     local m1,m2
     jmp short m2
m1   db txt
     db "$"
m2:  push ax
     push dx
     mov dx,offset m1
     mov ah,9
     int 21h
     pop dx
     pop ax
     endm
 
; ввод строки в переменную buf длиной buflen
input   macro buf,buflen
     local m1
     jmp short m1
buf  db buflen+1
     db 0
     db buflen+1 dup (0)
m1:  mov dx,offset buf ; ввод строки
     mov ah,0Ah
     int 21h
     endm
 
; это цифра ? да нет
isdigit: cmp bl,"0"
     jc notdigit
     cmp  bl,"9"+1
     jnc notdigit
     clc
     ret
notdigit:stc
     ret
 
; преобразование строки в число AX со знаком
readval:
     mov sign,0
     inc     si
     lodsb
     mov cl,al
     mov ch,0
     mov     ax,0
m0:  mov     bl,ds:[si]
     inc     si
     cmp bl,"-"
     jnz m2
     mov sign,1
     jmp m1
m2:  call    isdigit   ; это цифра ?
     jc      m1
     sub bl,"0"        ; да
     mov bh,0
     mov     di,10     ; dx:ax=ax*10+bx
     mul     di
     add     ax,bx
m1:  loop    m0
     cmp sign,0
     jz m3
     neg ax
m3:  ret
 
printval: ; вывод слова AX в десятичном виде со знаком
     push ax
     push bx
     push cx
     push dx
     mov sign,0
     cmp ax,0
     jge n2
     neg ax
     mov sign,1
n2:  mov cx,0
nextdig:mov dx,0
     mov bx,10
     div bx
     push dx
     inc  cx
     cmp ax,0
     jnz nextdig
     jcxz n1
     cmp  sign,0
     jz   n0
     mov  al,"-"
     call printchar
n0:  pop  ax
     add  al,"0"
     call printchar
     loop n0
n1:  pop  dx
     pop  cx
     pop  bx
     pop  ax
     ret
 
; Проверка условий
; Возвращается флаг Carry=1 если условие истинно
; и Carry=0 если условие ложно
;
 
gt0: cmp ax,0  ; ax>0 ?
     jg  agt01
     clc
     ret
agt01:stc
     ret
 
lt0: cmp ax,0 ; ax<0 ?
     jl alt0
     clc
     ret
alt0:stc
     ret
 
ageb:mov ax,varA ; varA>=varB ?
     cmp ax,varB
     jge x0
     clc
     ret
x0:  stc
     ret
 
aleb:mov ax,varA  ; varA<=varB ?
     cmp ax,varB
     jle x0
     clc
     ret
 
; Вычисление функции
calc:mov bx,0
     call ageb
     adc bx,0
     mov ax,varA
     call gt0
     adc bx,0
     mov ax,varB
     call gt0
     adc bx,0
     cmp bx,3  ; 3 условия по варианту 1 совпали ?
     jz  calc1
 
     mov bx,0
     call aleb
     adc bx,0
     mov ax,varA
     call lt0
     adc bx,0
     mov ax,varB
     call lt0
     adc bx,0
     cmp bx,3  ; 3 условия по варианту 2 совпали ?
     jz  calc2
 
; иначе - вариант 3
calc3:echonl "Version 3 y=a*a*b*b"
     mov ax,varA
     imul varA
     mov  tmp1,ax
     mov ax,varB
     imul varB
     mov  tmp2,ax
     imul tmp1
     ret      ; результат возвращается в ax в основную программу
 
calc1:echonl "Version 1 y=a*a+b*b"
     mov ax,varA
     imul varA
     mov  tmp1,ax
     mov ax,varB
     imul varB
     mov  tmp2,ax
     add  ax,tmp1
     ret    
 
calc2:echonl "Version 2 y=a*a-b*b"
     mov ax,varA
     imul varA
     mov  tmp1,ax
     mov ax,varB
     imul varB
     mov  tmp2,ax
     mov ax,tmp1
     sub ax,tmp2
     ret
 
; основная программа
beg: push cs
     pop ds
     push cs
     pop es
 
     echo "A="
     input var1,5
     call newline
     mov si,offset var1
     call readval
     mov varA,ax
 
     echo "B="
     input var2,5
     call newline
     mov si,offset var2
     call readval
     mov varB,ax
 
     call calc   ; ax=результат
 
     call printval ; печать ax
     call newline
     echonl "For exit press any key..."
       ; Ожидание нажатия клавиши
     mov ah,08h
     int 21h
     mov ax,4C00h
     int 21h
     end start
2
0 / 0 / 0
Регистрация: 30.11.2020
Сообщений: 4
02.12.2020, 15:42  [ТС] 3
Большое спасибо

Добавлено через 4 часа 35 минут
спасибо

Добавлено через 4 минуты
спасибо
0
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.12.2020, 16:40 4
Цитата Сообщение от Dron66 Посмотреть сообщение
Большое спасибо
Добавлено через 4 часа 35 минут
спасибо
Добавлено через 4 минуты
спасибо
хорошего человека можно благодарить многократно в цикле..
0
02.12.2020, 16:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2020, 16:40
Помогаю со студенческими работами здесь

Вычислить кусочечную функцию
Здравствуйте! Не могу понять условный переход в Ассемблере Очень сложно и непонятно if (a&gt;b) ...

Вычислить кусочечную функцию
Помогите написать в TASM-е format PE console entry start include...

Вычислить кусочечную функцию
Помогите написать в ассемблере программку для решения системы уравнений Z=\begin{cases}x*3+18 &amp;...

Вычислить кусочечную функцию
Помогите пожалуйста решить задачку!Дали нам кароче типо шаблон,и как то надо его переделать в то...

Вычислить кусочечную функцию
Два двухбайтовых слова сохраняются в стеке, первое находится по младшему адресу. Если разность...

Вычислить кусочечную функцию
разработать программу с применением условных и безусловных переходов


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

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