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

Реализация простейших арифметических операций

16.03.2014, 13:16. Показов 2816. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я в Assembler практически не разбираюсь!
Задание: y=x*5-x:2
Должно выполнять следующие функции:
ввод исходных значений;
вывод на экран вычисляемого значения;
контроль введенных значений (0-9);
вывод на экран строки с результатом.
Заранее спасибо большое.
Можно и в TASM
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2014, 13:16
Ответы с готовыми решениями:

Исследование арифметических операций
Уважаемые программисты, помогите с кодом,и если можно с объяснением. Используя в качестве операндов переменные, определенные в сегменте...

Оптимизация ассемблерных программ арифметических операций
Здесь будет приведено краткое изложение книги А.В. Максимова «Проектирование ассемблерных программ вычислительных алгоритмов». Книга вышла...

Узнать состояние флагов после арифметических операций
Я знаю, что при арифметических операциях существуют флаги (переполнение o, перенос c). Возник вопрос: как к ним обратиться и узнать их...

16
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
16.03.2014, 13:44
Цитата Сообщение от Smoke_DJ Посмотреть сообщение
я в Assembler практически не разбираюсь!
Smoke_DJ,
от того что тебе напишут готовую программу (а именно этого ты ждешь) в ассемблере ты все равно разбираться не начнешь. В этом разделе правила простые -- показывай СВОЮ неработающую программу и тогда тебе помогут
0
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
16.03.2014, 13:53  [ТС]
я предварительно знаю,но не могу написать в ассемблере
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
16.03.2014, 15:08
Smoke_DJ,
напрягись и всё получится, повторюсь, НИКТО ЗА ТЕБЯ ТВОЮ ПРОГРАММУ писать не будет
0
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
16.03.2014, 17:10  [ТС]
если пример скину, сможете дополнить?
программа написанная на fasm.
можно сразу исправить и на fasm.
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
use16
org 100h
jmp start
msg1 db 'Calculate y=z*********',10,13,'$'
x db ?
z db ?
y db ?
start:
push cs
pop ds
 
mov dx,msg1
mov ah,09h
int 21h
 
mov ah,01h
int 21h
sub al,'0'
mov [x],al
 
mov ah,01h
int 21h
sub al,'0'
 
mov dl,[x]
add al,dl
 
xor ah,ah
call output_dec
mov ah,10h
int 16h
mov ax,4c00h
int 21h
 
output_dec:
xor cx,cx
mov bx,10
 
lp1:
xor dx,dx
div bx
push dx
inc cx
test ax,ax
jnz lp1
 
lp2:
pop dx
add dl,'0'
mov ah,02h
int 21h
loop lp2
ret
0
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
17.03.2014, 20:18  [ТС]
Посмотри пожалуйста, где тут ошибка вычисления
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
use16
org 100h
x db ?
z db ?
y dw ?
mov dx,msg1
mov ah,09h
int 21h
;-------------
mov dx,x1
mov ah,09h
int 21h
 
mov ah,01h
int 21h
sub al,'0'
mov [x],al
 
mov dx,msg
mov ah,09h
int 21h
;-------------
mov dx,z1
mov ah,09h
int 21h
 
mov ah,01h
int 21h
sub al,'0'
mov [z],al
 
mov dx,msg
mov ah,09h
int 21h
mov dx,y1
mov ah,09h
int 21h
;-------------вычисление
xor ax,ax
mov al,[x]
mov bl,5
mul bl
mov bh,0
mov al,[z]
mov bl,2
div bl
mov bh,0
sub ax,bx
mov [y],ax
;--------------
xor ah,ah
call output_dec
esc:
mov ah, 10h
int 16h
cmp al,113
jne esc
mov ax, 4c00h
int 21h
output_dec:
xor cx,cx
mov bx,10
lp1:
xor dx,dx
div bx
push dx
inc cx
test ax,ax
jnz lp1
 
lp2:
pop dx
add dl,'0'
mov ah,02h
int 21h
loop lp2
ret
msg1 db 'Virajenie y=x*5-z:2',10,13,'$'
msg db 10,13,'$'
x1 db 'vvedite x=','$'
z1 db 'vvedite z=','$'
y1 db 'resultat y=','$'
можете помочь с проверкой ввода значений (0-9)

Добавлено через 1 час 40 минут
помогите мне с этой строкой, для этого уравнения y=x*5-z:2
Assembler
1
2
3
4
5
6
7
8
9
10
11
xor ax,ax
mov al,[x]
mov bl,5
mul bl
mov bh,0
mov al,[z]
mov bl,2
div bl
mov bh,0
sub ax,bx
mov [y],ax
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.03.2014, 04:18
Цитата Сообщение от Smoke_DJ Посмотреть сообщение
помогите мне с этой строкой, для этого уравнения y=x*5-z:2
Assembler
1
2
3
4
5
6
7
8
mov al,[x]
mov bl,5
mul bl; ax=x*5
mov bh,0
mov bl,[z]
shr bx,1; bx=z/2
sub ax,bx
mov [y],ax
Цитата Сообщение от Smoke_DJ Посмотреть сообщение
можете помочь с проверкой ввода значений (0-9)
https://www.cyberforum.ru/asse... 54461.html https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow "Ввод целого положительного или отрицательного числа числа.'
1
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
18.03.2014, 11:43  [ТС]
как можно сделать вывод для каждого выражения
x*5 и z:2?
просто когда я дополняю.он не показывает
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.03.2014, 11:48
Smoke_DJ,
https://www.cyberforum.ru/asse... 54461.html https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow "Вывод целого беззнакового числа от 0 до 99."
0
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
18.03.2014, 11:51  [ТС]
я имел ввиду X*5= и Z:2=
через сообщения, чтобы потом показывал результат после равно
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.03.2014, 11:55
Smoke_DJ,
мне всё равно, ЧТО ты имел в виду, я дал ссылку, читай внимательно и пиши программу, пока сам писать не начнешь, всё подсказки сделанные другими - "деньги на ветер", программирование это прежде всего усидчивость и желание добиться чего-то самостоятельно
0
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
18.03.2014, 12:55  [ТС]
нужно вывести как результат y
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.03.2014, 13:06
Цитата Сообщение от Smoke_DJ Посмотреть сообщение
нужно вывести как результат y
Smoke_DJ,
мне нужно вывести? нет, мне это не нужно
0
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
21.03.2014, 19:41  [ТС]
Помогите пожалуйста!Преподаватель сказал по другому написать, посмотри пожалуйста. После запуска и ввода чисел экран пропадает.
Вот листинг
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
use16
org 100h
 
jmp start
msg db 'Virajenie y=x*5-z:2',10,13,'$'
msg1 db 'Vvedite x(0-9)=','$'
msg2 db 'Vvedite z(0-9)=','$'
msg3 db 'Reshenie:','$'
msg4 db 'x*5=','$'
msg5 db 'z:2=','$'
msg6 db 'Otvet y=','$'
msg7 db 10,13,'$'
 
start:
 
mov ah,00h
mov al,03h
int 10h
 
mov ah,09h
mov dx,msg
int 21h
;\\\\\\\\\\\
mov ah,09h
mov dx,msg1
int 21h
 
mov ah,01h     ;x
int 21h
sub al,'0'
 
push ax
 
mov ah,09h
mov dx, msg2
int 21h
 
mov  ah,01h   ;z
int 21h
sub al,'0'
 
mov bl,al ;z
 
mov ah,09h
mov dx, msg7
int 21h
 
mov ah,09h
mov dx,msg3
int 21h
 
mov ah,09h
mov dx,msg7
int 21h
 
;x*5
mov al,2
mul cl
mov cl,al
 
push cx
mov dl,cl
mov ah,09h
mov dx,msg
int 21h
 
mov dl,cl
add dl, '0'
mov ah,02h
int 21h
 
;z:2
mov bl,2
div dl
mov dl,bl
 
push cx
mov dl,cl
mov ah,09h
mov dx,msg5
int 21h
 
mov dl,cl
add dl, '0'
mov ah,02h
int 21h
; x*5-x:2
pop bx
pop ax
sub al,bl
push ax
mov cl,al
 
mov ah,09h
mov dx, msg6
int 21h
 
mov dl,cl
add dl,'0'
mov ah,02h
int 21h
 
pop ax
 
push -1
     mov cx,10
     L:mov dx,10
     div cx
     push dx
     cmp ax,0
     jne L
     mov ah,2h
     L2:pop dx
     cmp dx,-1
     je ex
     add dl,'0'
     int 21h
     jmp L2
     ex:mov ax,4c00h
     int 21h
 
ret
   mov ax,4c00h
   int 21h
0
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
28.03.2014, 22:42  [ТС]
Помогите найти ошибку!После ввода чисел,он выдает сообщение о переполнении деления!
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
org 100h
jmp start
str1 db 'y=(x*5)+(z:2)','$'
str2 db 0ah,0dh,'vvedite z=','$'
str3 db 0ah,0dh,'vvedite x=','$'
str4 db 0ah,0dh,'(z:2)=','$'
str5 db 0ah,0dh,'(x*5)=','$'
str6 db 0ah,0dh,'y=','$'
str7 db 0ah,0dh,'chislo x=0','$'
 
 
x db ?
z db ?
y db ?
q db ?
w db ?
r dw ?
t dw ?
 
 
start:
mov dx,str1
mov ah,09h
int 21h       ; y=(z-x)*(x+5)'
mov dx,str2
int 21h       ; vivod 'vvedite z='
 
mov ah,01h
int 21h       ; vvod-vivod z
sub al,'0'
mov [z],al    ; zapis v [z]
 
mov dx,str3
mov ah,09h
int 21h       ; vivod 'vvedite x='
 
mov ah,01h
int 21h       ; vvod-vivod x
sub al,'0'
mov [x],al    ; zapis v [x]
 
;/////////
xor al,al
mov al,[z]
 
cmp al,[x]
jnz c1
c2:
mov dx,str7
mov ah,09h
int 21h
jmp c3
 
c1:
jbe c2
 
;  z:2
mov cl,[z]
shr cl,1
div cl
mov [y],cl
 
mov dx,str4
mov ah,09h
int 21h
xor ax,ax
mov al,[y]
 
push -1       ; sohranim priznak konca chisla
mov cx,10     ; kopiruem
l:
mov dx,0      ; ochishaem
div cx        ; delim
push dx       ; sohramyaem cifru
cmp ax,0      ; ostalsa 0?
jne l         ; net - prodolzhim
mov ah,2h
l2:
pop dx        ; vosstanovim cifru
cmp dx,-1     ; doshli do konca vihod
je ff
add dl,'0'    ; preobrazuem chislo v cifru
int 21h       ; vivod cifri na ekran
jmp l2        ; vivod rezultata
 
;x*5
ff:
mov bl,[x]
mov dl,5
mul dl
mov [q],dl
 
mov dx,str5
mov ah,09h
int 21h       ; vivod '(x*5)='
xor ax,ax
mov al,[q]     ; (x*5)=
 
 
push -1      ; vivod rezultata
mov cx,10
p:
mov dx,0
div cx
push dx
cmp ax,0
jne p
mov ah,2h
p2:
pop dx
cmp dx,-1
je s1
add dl,'0'
int 21h
jmp p2       ; vivod rezultata
 
s1:
mov bx,0
mov bl,[y]
mov cx,0
mov cl,[q]
 
add bx,cx    ; slojenie
mov [r],bx
 
mov dx,str6
mov ah,09h
int 21h       ; vivod 'y='
xor ax,ax
mov ax,[r]     ; y=
 
 
push -1      ; vivod rezultata
mov cx,10
u:
mov dx,0
div cx
push dx
cmp ax,0
jne u
mov ah,2h
u2:
pop dx
cmp dx,-1
je noesc
add dl,'0'
int 21h
jmp u2       ; vivod rezultata
 
 
c3:
noesc:       ; analiz nazhatia klavishi esc
mov ah,10h
int 16h
cmp al,81
jz exit
cmp al,113
jnz noesc    ; analiz nazhatia klavishi esc
 
exit:        ; vihod
mov ax,4c00h
int 21h
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
29.03.2014, 17:40
Цитата Сообщение от Smoke_DJ Посмотреть сообщение
y=(x*5)+(z:2)
Assembler
1
2
3
4
5
    movsx   edx, x
    movsx   eax, z
    lea edx, [edx*4+edx]    ; x*5
    shr eax, 1          ; z/2
    add eax, edx        ; eax = (x*5)+(z:2)
Тут даже думать незачем.
1
1 / 1 / 1
Регистрация: 28.02.2014
Сообщений: 18
05.04.2014, 18:55  [ТС]
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

Всем,кто помог спасибо большое!
Наверное кому-нибудь нужна будет эта программа
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
use16
org 100h
 
x db ?
z db ?
y dw ?
 
mov dx,msg1
mov ah,09h
int 21h
;-------------  vvod chisel X and Y
vvod_x:
 
mov dx,x_
mov ah,09h
int 21h
 
mov ah,01h
int 21h
cmp al,30h
jl no_msg_x
cmp al,39h
jg no_msg_x
sub al,'0'
mov [x],al
 
mov dx,msg
mov ah,09h
int 21h
 
vvod_z:
 
mov dx,z_
mov ah,09h
int 21h
 
mov ah,01h
int 21h
cmp al,31h
jl no_msg_z
cmp al,39h
jg no_msg_z
sub al,'0'
mov [z],al
 
mov dx,msg
mov ah,09h
int 21h
mov dx,y_
mov ah,09h
int 21h
    ;zavershenie vvoda X and Y
 ;вычисление
xor ax,ax
mov al,[x]
mov bl,5
mul bl ;ax=x*5
mov bh,0
 
mov bl,[z]
shr bx,1   ;bx=z/2
 
sub ax,bx
mov [y],ax
;---------------
 
js min
minn:
cmp cl,1
je min2
minn2:
xor ah,ah
 
call output_dec
 
esc:
mov ah, 10h
int 16h
cmp al,113
jne esc
mov ax, 4c00h
int 21h
 
output_dec:
xor cx,cx
mov bx,10
 
lp1:
xor dx,dx
div bx
push dx
inc cx
test ax,ax
jnz lp1
 
lp2:
pop dx
add dl,'0'
mov ah,02h
int 21h
loop lp2
ret
 
min:
mov cl,1
jmp minn
 
min2:
neg ax
cmp ax,0
je r
mov dx,sms
mov ah,09h
int 21h
r:
jmp minn2
 
no_msg_x:
mov dx,no_
mov ah,09h
int 21h
jmp vvod_x
 
no_msg_z:
mov dx,no_
mov ah,09h
int 21h
jmp vvod_z
;----------------------------
msg1 db 'Virajenie y=x*5-z:2',10,13,'$'
msg db 10,13,'$'
sms db '-','$'
no_ db  ' ne bilo vvedino chislo',10,13,'$'
x_ db 'vvedite x(0-9)=','$'
y_ db 'y=','$'
z_ db 'vvedite z(0-9)=','$'
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2014, 18:55
Помогаю со студенческими работами здесь

Как описать в коде выполнение арифметических операций
= */ 201010 В задание просто написано Вычислить Какой код программы должен быть?

Как подключить модуль математического сопроцессора FPU emu8086 для выполнения арифметических операций
Как подключить модуль математического сопроцессора FPU для выполнения арифметических операции над вещественными числами?

Калькулятор, который выполняет 4 простейших арифметических операций над двумя числами со знаком
Всем доброго времени суток. Такой вопрос: есть калькулятор, который выполняет 4 простейших арифметических операций с двумя числами. Задача...

Использование арифметических операций
Разработать программу вычисления значения по формуле. Программа должна обеспечивать анализ переполнения при выполнении операций. При...

Выполнение арифметических и логических операций
В каждом из заданий переменные a, b, c, d определяются в сегменте данных и имеют размерность слово. Необходимо выполнить над ними...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru