С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
4 / 4 / 2
Регистрация: 03.11.2011
Сообщений: 103

Перевести на асемблер кусок кода

14.03.2012, 22:52. Показов 1289. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
while ( val1 <= val2 )
{
Printf (“итерация: %d”, ++val1-val1)
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.03.2012, 22:52
Ответы с готовыми решениями:

перевести прогу на асемблер
Задана строка из смеси русских строчных и заглавных букв. Преобразовать её в строку из тех же заглавных букв. Составить программу для...

Как убрать кусок кода
Всем, доброго времени суток! Ситуация следующая. Наш программист, который писал нам под заказ, после завершения своей деятельности...

Поясните представленный кусок кода
Здравствуйте, появилась пара вопросов в процессе изучения: 1) читаю документы по асемблеру, в разделе &quot;Управление клавиатурой с...

3
15 / 22 / 6
Регистрация: 13.10.2011
Сообщений: 167
15.03.2012, 00:42
1)Ну во-первых,после printf должна идти ;
2)Вы понимаете что прога у вас будет зациклена,ибо выражение ++val1-val1 Всегда равно 0.Возможно вы здесь ошиблись.
3)Если вы не ошиблись вот код на асме целой проги
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
.386
    .model flat, stdcall
    option casemap :none
    include \masm32\include\windows.inc
    include \masm32\include\user32.inc 
    include \masm32\include\masm32.inc
    include \masm32\include\kernel32.inc
    include \masm32\macros\macros.asm
    includelib \masm32\lib\user32.lib 
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\kernel32.lib
    Bsize equ 12
    .data
    val1 dd 5
    val2 dd 5
    stdout dd ?
    cWritten dd ?
    buf db Bsize dup(?)
    ifmt db "%d",0
   msg db "Iteration=",0
    .code
    start:
    invoke GetStdHandle,STD_OUTPUT_HANDLE
    mov stdout,eax
    mov edx,val2
.While(val1<=edx)
mov ebx,val1
inc ebx
inc val1
sub ebx,val1
mov val1,0
invoke wsprintf,ADDR buf,ADDR ifmt,ebx
invoke WriteConsoleA,stdout,ADDR msg,SIZEOF msg,ADDR cWritten,NULL
invoke WriteConsoleA,stdout,ADDR buf,Bsize,ADDR cWritten,NULL
.endw
invoke Sleep,9000
invoke ExitProcess,0
end start
4)Код конкретно вашего куска.Invoke скорее всего вам придётся на что-то заменить cout,printf(но это я так думаю,а может и так прокатит при нужных заголовках .h)
Assembler
1
2
3
4
5
6
7
8
9
10
11
 mov edx,val2
.While(val1<=edx)
mov ebx,val1
inc ebx
inc val1
sub ebx,val1
mov val1,0
invoke wsprintf,ADDR buf,ADDR ifmt,ebx
invoke WriteConsoleA,stdout,ADDR msg,SIZEOF msg,ADDR cWritten,NULL
invoke WriteConsoleA,stdout,ADDR buf,Bsize,ADDR cWritten,NULL
.endw
5)Можно сделать код ещё проще,так как ваше выражение в printf=0
Assembler
1
2
3
4
5
6
7
 mov edx,val2
.While(val1<=edx)
mov val1,0
invoke wsprintf,ADDR buf,ADDR ifmt,val1
invoke WriteConsoleA,stdout,ADDR msg,SIZEOF msg,ADDR cWritten,NULL
invoke WriteConsoleA,stdout,ADDR buf,Bsize,ADDR cWritten,NULL
.endw
Добавлено через 15 минут
6) Если вам нужно вывести число не через invok-и ,то тогда смотрите тему Ввод и вывод чисел в различных системах счисления
1
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
15.03.2012, 01:19
Typoii, дык, может, каков вопрос...
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
; while ( val1 <= val2 )
L$1:
    mov         eax,dword ptr -8[ebp] 
    cmp         eax,dword ptr -4[ebp] 
    jg          L$4 
 
; {
; printf("итерация: %d", ++val1-val1);
L$2:
    inc         dword ptr -8[ebp] 
    mov         eax,dword ptr -8[ebp] 
    sub         eax,dword ptr -8[ebp] 
    push        eax 
    mov         eax,offset FLAT:L$6 
    push        eax 
    call        near ptr FLAT:printf 
    add         esp,8 
 
; };
L$3:
    jmp         L$1 
 
 L$4:
_TEXT       ENDS
CONST       SEGMENT DWORD PUBLIC USE32 'DATA'
L$6:
    DB  'итерация: %d', 0
CONST       ENDS
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
16.03.2012, 15:47
Цитата Сообщение от igor913 Посмотреть сообщение
перевести в асемблер кусок кода
Скомпилить и дисассэмблировать потом что мешает?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2012, 15:47
Помогаю со студенческими работами здесь

Перевести кусок программы из C в Assembler
Здравствуйте ! Есть программа, в ней нужно одну часть перевести из языка C в Assembler. Не могу ни как связать массивы. #include...

Перевести кусок кода из С++.NET
ref struct Procedure { int type; array&lt;object^&gt;^ parameters; int target; int extra; }; ref struct Condition {

Перевести маленький кусок кода с VB на C#
Public Class Job Public arrivalT As Integer Public burstT As Integer Public waitingT As Integer Public...

Перевести небольшой кусок кода из C# в Java
Help)) C# не знаю for (int i = 0; i &lt; nums.Length; ++i) nums = i; IEnumerable&lt;int&gt; permutations; for (int i = 0; i...

Подскажите как перевести кусок кода с Delphi на C++
В Дельфи так: Жирным я выделил интересующий меня фрагмент. Вот как он объявлен в файле .hpp (то есть уже в билдере) typedef...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru