Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для System9266
8 / 8 / 3
Регистрация: 31.05.2012
Сообщений: 100

Вычислить выражение (b*b-2*b)/(3a+b) (проверить правильность написания кода)

14.05.2014, 20:28. Показов 1353. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
; Template for console application 
;вычислить выражение (b*b-2*b)/(3a+b)  
.586 
.MODEL flat, stdcall 
OPTION CASEMAP:NONE 
 
Include kernel32.inc 
Include masm32.inc 
 
IncludeLib kernel32.lib 
IncludeLib masm32.lib 
 
.CONST 
MsgExit DB 13,10,"Press Enter to Exit",0AH,0DH,0 
 
.DATA 
B SWORD 3 
A SWORD 2 
X SWORD ?;рез-ат
 
.DATA? 
 
inbuf DB 100 DUP (?) 
 
.CODE 
Start: ;(b*b-2*b)/(3a+b) 
XOR EAX,EAX ;обнуляю регистры
XOR EBX,EBX 
XOR EDX,EDX 
XOR ECX,ECX 
XOR ESP,ESP 
XOR EBP,EBP 
;Вычисления начинаю с последней скобки (3a+b)
;(3*a)
    mov AX,A ;Значение А=2 в помещаю в АХ
    mov BX,3 ;BX=3
    imul BX ; Уможить BX*AX 
    mov DX,AX ;результат копирую из AX в DX
XOR EAX,EAX ; Обнуляю АХ
XOR EBX,EBX ;Обнуляю BX
;((3*a) +b))
    mov BX,B ;Копирую  Значение B=3 в BX
    add DX,BX; Сложить DX+BX, ответ записывается в DX 
    mov BX,DX;результат копирую из DX в BX
XOR EAX,EAX ; Обнуляю АХ
XOR EDX,EDX ; Обнуляю DX
;(b*b)
    mov SP,BX ;Копирую Значение BX в SX
    mov ax,B ; Копирую в AX значение B
    mul AX; ax=b*b 
    mov DX,AX; результат копирую в DX 
XOR EAX,EAX ; Обнуляю AX
;(2*b)
    mov AX,B;Копирую значение В в АХ
    mov BX,2 ; Копирую 2 в ВХ
    imul BX ; Умножение 2*b, Результат умножения в АХ-се
    mov CX,AX ; Результат умножения из АХ в СХ 
XOR EAX,EAX;Обнуляю АХ
;((b*b)-(2*b))
    mov DX,SP ; Помещаю значение SP в DX
    sbb DX,CX ; Вычитаю из DX-CX, рез-ат в первом операнде (DX)
    mov AX,DX ; Помещаю в АХ значение DX
XOR ECX,ECX; Обнуляю CX
    mov CX,SP; Помещаю в СХ значение SP 
    idiv CX;  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!
    ; По поему виденью должно получится так, 3/9=0.3, я не поманию, как деление происходят
    ;Из каких регистров берутся значения и в каком сохраняется результат деления
    ; Прошу помочь!!!!!!
    mov X,AX; 
 
XOR EAX,EAX 
Invoke StdOut,ADDR MsgExit 
Invoke StdIn,ADDR inbuf,LengthOf inbuf 
 
Invoke ExitProcess,0 
End Start
Добавлено через 7 минут
Не получается последнее действие(деление скобки на скобку) написать, так, как не совсем понимаю, как работает деление, из каких регистров берутся значения операндов и в какой регистр помещается ответ деления. Проверка вычитания по отладчику OllyDbg, среда программирования MASM32. Без ввода значения выражения и вывода на экран, значения заданы такие A 2 , B 3.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2014, 20:28
Ответы с готовыми решениями:

Проверить правильность написания кода
Пример:k=45,7-1/4*sin2+(th1/sin5)log 7 (по основанию 5); f=10ln3/ch4*(arcsin1/3+arccos5/6)sec3; m=корень 3 степени(k*f), если k<f;...

Проверить правильность написания кода
Приветствую всех.Взялся изучать шарп.Ребят правильно ли я прокоментировал этот код? (Заранее спасибо):

Вычисление значений функций. Проверить правильность написания кода
Правильно ли написана программа ? Запишите и выполните программу на вычисления значений функций. Число х вводите с клавиатуры. ...

4
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
15.05.2014, 10:37
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
; masm windows console #
.586 
.MODEL flat, stdcall 
OPTION CASEMAP:NONE
include masm32rt.inc 
 
.DATA 
B SdWORD 300 
A SdWORD 200 
X SdWORD ?;рез-ат
 
.CODE 
Start: 
;(b*b-2*b)/(3a+b)=300*298/(600+300)=298/3=99 
    mov ebx,A 
    lea ebx,[ebx*2+ebx] ;BX=3A
    add ebx,B ;ebx=3A+B  
    mov eax,B 
    sub eax,2 ;eax=B-2
    imul B    ;edx:eax=(b*b-2*b)
    idiv ebx  ;eax=(b*b-2*b)/(3a+b)
    mov X,eax 
    print str$(X),10,13
        inkey
    invoke ExitProcess,0 
End Start
0
 Аватар для System9266
8 / 8 / 3
Регистрация: 31.05.2012
Сообщений: 100
15.05.2014, 21:06  [ТС]
можно только использовать: сложение, вычитание, умножение, деление. lea мы еще не проходили. Как вариант. Не пояснишь работу при умножении и делении, на примере двух числе, 6*7?

Добавлено через 9 минут
Какие манипуляции в регистрах происходят при умножении и деления, регистры операндов какие? Интересно мнение по моему выше написанному коду(моё первое выражение), можно ли так писать код, как я написал, ничего, что я так часто очищаю регистры?Хотелось бы увидеть мой код исправным.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
16.05.2014, 05:25
Цитата Сообщение от System9266 Посмотреть сообщение
Какие манипуляции в регистрах происходят при умножении и деления, регистры операндов какие?
Учебник взять в библиотеке не судьба?
Цитата Сообщение от System9266 Посмотреть сообщение
можно ли так писать код, как я написал, ничего, что я так часто очищаю регистры?Хотелось бы увидеть мой код исправным
Хрень полная, а не программа у тебя. Не хочешь lea ebx,[ebx*2+ebx] напиши imul ebx,3
0
programmer
 Аватар для Thread
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
16.05.2014, 08:36
Цитата Сообщение от Mikl___ Посмотреть сообщение
Хрень полная, а не программа у тебя.
Солидарен.Такая маленькая задачка и столько кода.
System9266,
Стековый регистр не трогай.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2014, 08:36
Помогаю со студенческими работами здесь

Проверить правильность написания сочетаний «жи», «ши», «ча», «ща»
Последовательностью слов задана строка. Проверить правильность написания сочетаний «жи», «ши», «ча», «ща», «чу» и «щу». Если надо, то...

Проверить правильность написания предикатов
Проверьте пожалуйста ,правильно ли я записала выражения на языке предикатов, а то сомневаюсь я. Писать формулы здесь не умею, поэтому...

правильность написания php кода
Доброй ночи. Очень банальный вопрос, но все таки хотелось бы знать точно. Хочу себя приучить писать так чтобы код был легко читаемым и...

Проверить правильность написания чисел в тексте
Люди добрые, помогите пожалуйста, как написать программу?Просто я новичек!( Проверить правильность написания чисел в...

Проверить правильность написания чисел в тексте
Проверить правильность написания чисел в тексте. Встретившиеся в начале числе незначащие нули опустить. Исправленный текст напечатать.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru