4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
1

Программа, выполняющая деление 64-битового операнда на 32-разрядный

12.12.2018, 10:33. Показов 1504. Ответов 40
Метки нет (Все метки)

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

Кликните здесь для просмотра всего текста

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
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32. lib
.data
conTitle DB "Sign division", 0
mes DB "The result of sign division 2788/(-360) = ", 0
len mes EQU $-mes
charBuf DB ", 0
len charBuf DD $-charBuf
idl DQ 2788
id2 DD -360
ires DQ 0
sign DB " + "
lpFmt DB "%d",- 0
lpFmtMix DB "%c%d", 0
readBuf DB ? 
lenReadBuf DD 1
hStdln DD 0
hStdOut DD 0
chrsRead DD 0
chrsWritten DD 0
 
STD_INP_HNDL DD -10'
STD_OUTP_HNDL DD -11
. code
start: 
call AllocConsole
test EAX, EAX
jz ex
push offset conTitle
call SetConsoieTitieA
test EAX, EAX
j z ex
call getout_hndl
call getinp_hndl
; операция деления б4-битовой переменной idl
; на 32-разрядный делитель id2
mov ЕАХ, DWORD PTR idl
mov EDX, DWORD PTR idl+4
mov EBX, id2
idiv EBX
; сохранить' частное по адресу ires+4
; и остаток по адресу ires
mov DWORD PTR ires+4, EAX
mov DWORD PTR ires, EDX
; преобразование значения частного в строку
push DWORD PTR ires+4
push offset lpFmt
push offset charBuf
call wsprintf
add ESP, 12
push EBX
3 Зак. 1064
mov EBX, offset mes
mov ECX, len_mes
call write_con
pop EBX
; вывод на экран значения частного
push ЕВХ
mov ЕВХ, offset charBuf
mov ECX, len_charBuf
call write_con
pop EBX
; очистка строкового буфера
call clear_buf
; преобразование в строку остатка от деления
push DWORD PTR ires
push DWORD PTR sign
push offset lpFmtMix
push offset charBuf
call wsprintf
add ESP, 16
; вывод на экран значения остатка от деления
push ЕВХ
mov ЕВХ, offset charBuf
mov ЕСХ, len_charBuf
call write_con
pop EBX
; ожидание ввода с консоли и выход
call read con
ех: 
push О
call ExitProcess
; подпрограммы
getout_hndl proc
push STD_OUTP_HNDL
call GetStdHandle
ret
getout_hndl endp
getinp_hndl proc
push STD_INP_HNDL
call GetStdHandle
mov hStdln, EAX
ret
getinp_hndl endp
write_con proc
push 0
push chrsWritten
push ECX
push EBX
push hStdOut
call WriteConsoleA
ret
write_con endp
read_con proc
push 0
push chrsRead
push lenReadBuf
push offset readBuf
push hStdln
call ReadConsoleA
ret
read_con endp
mov hStdOuf, EAX
clear_buf proc
eld
lea EDI, BYTE PTR charBuf
mov ECX, len_charBuf
mov AL, 20h
rep stosb
ret
clear_buf endp
end start


Добавлено через 13 минут
и еще это все делается в масм или можно на с++?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2018, 10:33
Ответы с готовыми решениями:

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

Программа, выполняющая перевод миллисекунд в дату
Добрый день, уважаемые эксперты. Кому не трудно, напишите программу, выполняющую перевод...

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

Программа,выполняющая следующие вычисления (256*А/(Х-В)*(С*Х+D))/E
(256*А/(Х-В)*(С*Х+D))/E

40
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
14.12.2018, 15:00  [ТС] 2
апну
0
Модератор
Эксперт по электронике
7762 / 3911 / 1504
Регистрация: 01.02.2015
Сообщений: 12,067
Записей в блоге: 2
14.12.2018, 19:21 3
В чём проблема - скомпилировать не можете?
Устанавливайте masm32, на том же диске записывайте вашу программу, открывайте в masm32 редактор qe.exe, им открывайте ваш файл, ищите в менюшках Build Console.
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
14.12.2018, 20:52  [ТС] 4
ФедосеевПавел, а файл можно через .tasm расширение?
0
6679 / 2662 / 366
Регистрация: 17.02.2013
Сообщений: 3,908
14.12.2018, 21:30 5

Не по теме:

Можно Машку за ляжку.

Когда я срочную служил на некоторые вопросы в армии были автоматические ответы. На подобный вопрос автоматически последовал бы такой. :D


А вообще фраза до конца не достроена. Ее не понять. Через .asm расширение можно что ?
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
15.12.2018, 02:06  [ТС] 6
ФедосеевПавел, а где эта qe находится? в какой папке? прост оя все экзешники попробовал позапускат ьи толку не очень

Добавлено через 5 минут
Ethereal, засунуть код в текстовик,сделать расширение .asm изапустить.. но яе разберусь что есть что в масм
0
6679 / 2662 / 366
Регистрация: 17.02.2013
Сообщений: 3,908
15.12.2018, 13:58 7
Цитата Сообщение от Yelle Посмотреть сообщение
засунуть код в текстовик,сделать расширение .asm изапустить..
Дык это не исполняемый файл. Как ты его запустишь коли он не исполняемый ?
0
Модератор
Эксперт по электронике
7762 / 3911 / 1504
Регистрация: 01.02.2015
Сообщений: 12,067
Записей в блоге: 2
16.12.2018, 09:17 8
Установите пакет masm32 из http://www.masm32.com/
В каталоге masm32 есть программа qedit.exe - это текстовый редактор. Среди его меню найдите те, о которых я говорил.

Вперёд!
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
16.12.2018, 13:31  [ТС] 9
ФедосеевПавел, ошибки выдает)
0
Ушел с форума
Автор FAQ
15037 / 7232 / 902
Регистрация: 11.11.2010
Сообщений: 12,985
16.12.2018, 13:38 10
Цитата Сообщение от Yelle Посмотреть сообщение
ФедосеевПавел, ошибки выдает)
Yelle,
так озвучь эти ошибки, ФедосеевПавел не волшебник и не экстасекс
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
16.12.2018, 13:52  [ТС] 11
Mikl___, в начале
:error: A2008: syntax error: integer
:error: A2085: instruction or register not accepted in current CPU mode

в конце
\masm32\include\windows.inc<78> по <102> : error A2119: language type must be specified
\masm32\include\masm32.inc<9> по <153> : error A2119: language type must be specified
\masm32\include\masm32.inc<154> : Fatal error A1012: error count exceeds 100; stoping assembly
0
Ушел с форума
Автор FAQ
15037 / 7232 / 902
Регистрация: 11.11.2010
Сообщений: 12,985
16.12.2018, 14:07 12
Yelle,
для начала в строке 15 'charBuf DB ", 0' не хватает "двойной кавычки"
в строке 32 вместо ". code" напиши ".code"
в строке 40 вместо "j z ex" напиши "jz ex"
строка 60 что за хрень? "3 Зак. 1064"
строка 123 вместо "eld" поставь "cld"
программы нужно набирать ручками и очень внимательно, а не вставлять сканированный текст
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
16.12.2018, 14:30  [ТС] 13
Mikl___, та я до этого все исправил,ток по 123строке не заметил пока не написали,но все также
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
386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32. lib
.data
conTitle DB "Sign division", 0
mes DB "The result of sign division 2788/(-360) = ", 0
len_mes EQU $-mes
 
charBuf DB " ", 0
len_charBuf DD $-charBuf
idl DQ 2788
id2 DD -360
ires DQ 0
sign DB "+"
lpFmt DB "%d",- 0
lpFmtMix DB "%c%d", 0
 
readBuf DB ? 
lenReadBuf DD 1
;
hStdln DD 0
hStdOut DD 0
;
chrsRead DD 0
chrsWritten DD 0
;
 
STD_INP_HNDL DD -10
STD_OUTP_HNDL DD -11
.code
start: 
call AllocConsole
test EAX, EAX
jz ex
push offset conTitle
call SetConsoieTitleA
test EAX, EAX
jz ex
 
call getout_hndl
call getinp_hndl
 
; операция деления б4-битовой переменной idl
; на 32-разрядный делитель id2
 
mov ЕАХ, DWORD PTR idl
mov EDX, DWORD PTR idl+4
mov EBX, id2
idiv EBX
 
; сохранить частное по адресу ires+4
; и остаток по адресу ires
 
mov DWORD PTR ires+4, EAX
mov DWORD PTR ires, EDX
 
; преобразование значения частного в строку
 
push DWORD PTR ires+4
push offset lpFmt
push offset charBuf
call wsprintf
add ESP, 12
mov EBX, offset mes
mov ECX, len_mes
call write_con
pop EBX
 
; вывод на экран значения частного
 
push ЕВХ
mov ЕВХ, offset charBuf
mov ECX, len_charBuf
call write_con
pop EBX
 
; очистка строкового буфера
call clear_buf
 
; преобразование в строку остатка от деления
push DWORD PTR ires
push DWORD PTR sign
push offset lpFmtMix
push offset charBuf
call wsprintf
add ESP, 16
 
; вывод на экран значения остатка от деления
push ЕВХ
mov ЕВХ, offset charBuf
mov ЕСХ, len_charBuf
call write_con
pop EBX
 
; ожидание ввода с консоли и выход
call read_con
ех: 
push О
call ExitProcess
 
; подпрограммы
getout_hndl proc
push STD_OUTP_HNDL
call GetStdHandle
mov hStdOut; EAX
ret
getout_hndl endp
 
getinp_hndl proc
push STD_INP_HNDL
call GetStdHandle
mov hStdln, EAX
ret
getinp_hndl endp
 
write_con proc
push 0
push chrsWritten
push ECX
push EBX
push hStdOut
call WriteConsoleA
ret
write_con endp
 
read_con proc
push 0
push chrsRead
push lenReadBuf
push offset readBuf
push hStdln
call ReadConsoleA
ret
 
clear_buf proc
сld
lea EDI, BYTE PTR charBuf
mov ECX, len_charBuf
mov AL, 20h
rep stosb
ret
clear_buf endp
end start
0
Ушел с форума
Автор FAQ
15037 / 7232 / 902
Регистрация: 11.11.2010
Сообщений: 12,985
16.12.2018, 15:05 14
Цитата Сообщение от Yelle Посмотреть сообщение
но все также
Что всё также? Я диагноз, конечно, могу поставить на расстоянии, только вряд ли он тебе понравится. Бери текст, с которого копируешь программу, и буква за буквой проверяй, только так
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
16.12.2018, 15:25  [ТС] 15
Mikl___, ошибки при запуске теже
я уже проверил написалже
0
Ушел с форума
Автор FAQ
15037 / 7232 / 902
Регистрация: 11.11.2010
Сообщений: 12,985
16.12.2018, 15:28 16
Yelle,
я должен каждую строчку вычитывать? Например строка 22 "lpFmt DB "%d",- 0" минус там для чего? Давай сам....
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
16.12.2018, 17:07  [ТС] 17
Mikl___, возможно,ибо для меня это неизвестная тема и обьяснить нам не успели,из всей информации есть этот код и картинка что должен выйти ответ в консоли -7 +268

Добавлено через 5 минут
на месте id1 должно быть 1 или l(англ л)?
0
Ушел с форума
Автор FAQ
15037 / 7232 / 902
Регистрация: 11.11.2010
Сообщений: 12,985
16.12.2018, 19:23 18
Yelle,
первоисточник бы прикрепил, тогда было бы проще тебя проверить. Раз у тебя есть id2 значит это id1
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
16.12.2018, 19:47  [ТС] 19
Mikl___, могу прицепить файл ворда,или ссылку к нему но думаю что его удалят
0
4 / 0 / 1
Регистрация: 28.01.2018
Сообщений: 305
16.12.2018, 19:50  [ТС] 20
https://www.cyberforum.ru/atta... 1544978987
Вложения
Тип файла: rar 00Программа деления чисел.rar (145.9 Кб, 7 просмотров)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2018, 19:50

Программа выполняющая запрос в НБКИ на Delphi
Здравствуйте! Нужно реализовать программу, которая отсылает запрос в НБКИ. Кто нибудь делал...

Программа, выполняющая решение квадратного уравнения
Написать программу, выполняющую решение квадратного уравнения ax2+bx+c=0. Пользователь должен...

Программа, выполняющая пересылки, операции сложения, вычитания
1. Очистить регистр СХ. 2. Переслать число xxh в регистр AL. 3. Добавить число xxxxh к регистру...

Программа, выполняющая какие-либо действия каждую секунду.
Есть бинарные часы, консольный вариант. Как осуществить сабж? Есть вариант сделать это через...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru