Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 9
MASM

Вывести несколько переменных в разных строках MessageBox

26.03.2020, 12:13. Показов 2844. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Написал небольшую программу, которая 5 раз с разными значениями переменных обсчитывает математический пример, в итоге получается 5 элементов:
Assembler
1
2
3
4
5
result[0]
result[4]
result[8]
result[12]
result[16]
которые нужно вывести построчно на экран. Перед выводом элемент переводится в строку. Но больше одного из них у меня не получается вывести, перечитал и переискал много всего. Буду рад конкретному примеру, если возможно. Советовали на мой вопрос использовать wsprintf, но с ним тоже у меня другого результата кроме того, что уже есть, не получилось
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
.386
.model flat,stdcall
option casemap:none
 
include \masm32\include\masm32rt.inc
 
.data
titletext db 'Лаб 5', 0
AnswerTxt db 'The answer is '
AnswerNum db 11 dup(0)
num_a dd 5,-5,-25,25,-5
num_b dd 5,32,3,-5,6
num_c dd 10,2,8,12,4
bracket dd ?
result dd ?,?,?,?,?
 
.code
start:
    mov esi, 5
    mov edi, 0
    .Repeat
        mov eax, -25
        mov ebx, num_a[edi]
        cdq
        idiv ebx
        add eax, num_c[edi]
        mov bracket, eax
        mov eax, num_b[edi]
        mov ebx, num_a[edi]
        cdq
        imul ebx
        sub bracket, eax
        mov eax, num_c[edi]
        mov ebx, num_b[edi]
        cdq
        imul ebx
        mov ebx, 2
        cdq
        idiv ebx
        add eax, 1
        mov ebx, bracket
        cdq
        imul ebx
        mov result[edi], eax
 
        mov ebx, 2
        cdq
        idiv ebx
 
        .IF edx == 0
            mov eax, result[edi]
            mov ebx, 2
            cdq
            idiv ebx
        .ELSE
            mov eax, result[edi]
            mov ebx, 5
            cdq
            imul ebx
        .ENDIF
 
        mov result[edi], eax
        add edi, 4
        dec esi
        .Until Zero?
 
        push offset AnswerNum
        push result[12]
        call dwtoa
        push 0
        push offset titletext
        push offset AnswerTxt
        push 0
        call MessageBox
        call ExitProcess
end start
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2020, 12:13
Ответы с готовыми решениями:

Как три строковых переменных вывести на разных строках?
.... writeln(a); writeln(b); writeln(c); // a,b,c - строки

Вывести значения двух переменных в MessageBox
Как вывести 2 переменные в MessageBox? TCHAR buf = {0}; _stprintf(buf, TEXT("%d"), (rc.right)/2); ...

Метод, возвращающий несколько переменных разных типов
Возможно ли сделать так чтобы метод вернул мне и bool и string и int например? Как это сделать и если можно пример.

2
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
26.03.2020, 15:37
Лучший ответ Сообщение было отмечено Bugogo как решение

Решение

Цитата Сообщение от Bugogo Посмотреть сообщение
Советовали на мой вопрос использовать wsprintf
этой функции нужен приёмный буфер и строка со спецификаторами,
внутри которых можешь и вставлять перевод строки 13,10
пример на FASM'e будет такой (выводит значения регистров):

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include 'win32ax.inc'
;-------------
.data
title    db  'Лабораторная 5',0
frmt     db  13,10,'Регистр EAX: %08X'
         db  13,10,'Регистр EBX: %08X'
         db  13,10,'Регистр ECX: %08X'
         db  13,10,'Регистр EDX: %08X'
         db  13,10,'Регистр EBP: %08X',0
buff     db  0
;-------------
.code
start:
        invoke  wsprintf,buff,frmt,eax,ebx,ecx,edx,ebp
        invoke  MessageBox,0,buff,title,0
        invoke  ExitProcess,0
.end start
Изображения
 
2
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 9
26.03.2020, 16:39  [ТС]
По идее этот код должен работать и в masm, но MessageBox даже не появляется.

Может как-то отдебажить можно? Я просто через MASM32 Editor делаю, на IDE Это мало похоже.

Добавлено через 24 минуты
Получилось, нужно было добавить
Assembler
1
addr
перед
Assembler
1
buff
и
Assembler
1
frmt
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2020, 16:39
Помогаю со студенческими работами здесь

Несколько переменных с разных массивов в одном блоке разметки html
Сделал так: <?php $auto = ; $marka = ; foreach($auto as $line) { foreach($marka as $line2) { ?> <div...

Как в элементе управления CListCtrl в разных строках вывести разные иконки?
Код нижеследующий. Результат: во всех строках иконки - одинаковые. Но, по крайней мере, с каждым циклом for дескриптор иконок hIcon...

Системный таймер. Вывести дату и время на экран на разных строках экрана
Вывести дату и время на экран на разных строках экрана. .model small .stack 128h .data den db ' .','$'; mes db ' .','$'; ...

Как вывести несколько переменных в Label
Как вывести WRITELN (' ',X3,' ',X3,' ',X3,' ',X3 ,' ',X3 ,' ',X3 ,' ',X3 ,' ',X3); эти переменные в Label или в другие компоненты ?

Как вывести в название консоли несколько переменных?
Как вывести в название консоли несколько переменных? Что-бы там было ( a = переменная и b = переменная ).


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru