Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/57: Рейтинг темы: голосов - 57, средняя оценка - 4.96
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 188

Самая красивая и полезная ПРОГРАММА

30.04.2012, 14:06. Показов 12043. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Глубокоуважаемые господа суперспециалисты!
Стране нужна РАБОТАЮЩАЯ программа для быстрого освоения языка Assembler.
Имею MASM32 v.10. Есть и неплохой отладчик. Персональный компьютер с ОС типа Windows XP.
В книгах - очень много ошибок! Приводятся разные по давности варианты написания исходного кода и MASM32 v.10 не выполняет для этого кода компиляцию.
Вот что надо любому начинающему, чтобы далее двигатся самостоятельно:
нужен вариант исходного кода, где простыми средствами (без макросов) написаны все разделы программы (процессор и подключаемые файлы; сегменты; уточнение по регистрам DS CS SS ES; метка старта и метка завершения программы) и ВЫПОЛНЯЕТСЯ КОНКРЕТНАЯ ЗАДАЧА АРИФМЕТИЧЕСКИХ ДЕЙСТВИЙ НАД ДВУМЯ-ТРЕМЯ ЦЕЛЫМИ ЧИСЛАМИ С ВЫВОДОМ РЕЗУЛЬТАТА ВЫЧИСЛЕНИЙ НА КОНСОЛЬ (дополнительно как второй вариант исходного кода можно и в созданное Диалоговое Окно "Resalt").
Прошу проверить на нормальную компиляцию и создание файла *.exe .
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2012, 14:06
Ответы с готовыми решениями:

Какая на Ваш взгляд самая красивая, динамичная игра на XNA
Всем пт! Я хотел бы понять на что способен этот фреймворк, и поэтому создал эту тему... Заранее спс всем!

полезная программа
Всем доброго времени суток! Возникла надобность написания программы которая бы (в режиме реального времени ) при происнесение слова бл**ь...

C чего начать? полезная программа
Добрый день, Для экономии времени появилась потребность в программе, суть следующая, есть два параметра ширина и высота (x, y) ввод для...

28
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
06.05.2012, 11:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от VlTag Посмотреть сообщение
Как вывести число из регистра AX?
Я вам уже не один раз показал как это делается. Для этого используется функция 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
.386
    .model flat, stdcall
    option casemap :none
 
    include C:\masm32\include\windows.inc
    include C:\masm32\include\user32.inc
    include C:\masm32\include\kernel32.inc
    include C:\masm32\include\masm32.inc
    includelib C:\masm32\lib\user32.lib
    includelib C:\masm32\lib\kernel32.lib
    includelib C:\masm32\lib\masm32.lib
      
.data
 msg1 db 'Please type your name:',13,10,0
 msg2 db 'Nice to see you ',0
 msg3 db ' Stop Program? For stop Program press key [Enter]:',0
 
 format db "%u",0
 mystr db 11 dup (?)
 
 .data?
 buffer db 100 dup(?)
 
 .code
 start:
 
 mov AX,00  ; - зачем эти строки, ведь ниже mov AX,05
 sub AX,AX  ; /
 mov AX,05
 
 movzx edx,ax
 invoke wsprintf,offset mystr,offset format,edx ; вывод значения из ax на консоль
 invoke StdOut,addr mystr
 
 invoke StdOut,ADDR msg1
 invoke StdIn,ADDR buffer,100 ; receive text input
 invoke StdOut,ADDR msg2
 invoke StdOut,ADDR buffer
 invoke StdOut,ADDR msg3
 invoke StdIn,ADDR buffer,100 ; receive text input
 invoke ExitProcess,0
 ret        ; зачем ret, вы ведь при вызове ExitProcess выходите
 
 END start
0
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 188
06.05.2012, 14:16  [ТС]
Огромное спасибо! Все замечания отработаю. Достану самый лучший учебник по Assembler for MASM32.
Очень и очень Вам благодарен!
0
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 188
08.05.2012, 12:21  [ТС]
1. Поздравляю радиоинженеров, электроников и программистов с Днём Радио!
Мы будем п о м о г а т ь друг-другу и сделаем Россию мировым лидером!
2. Достал электронную версию книги: Юрий Магда "Ассемблер: Разработка и оптимизация Windows-приложений". Хорошая книга? Под MASM32 подходит?
3. Кто работал с программой-средой IDE с названием WinAsm_Studio_5.1.3.0 ? Первое впечатление такое, что невозможно оторваться, т.е. всё красиво и удобно! Намного приятнее работать, чем с программой MASM32_v.10 . Большие возможности для создания любых проектов.
Но вот вопрос: можно ли использовать WinAsm_Studio_5.1.3.0 для создания профессиональных программ? Хороший ли это компилятор?
(Спрашиваю потому, что мне нужно выполнить разработку нового промышленного контроллера).

Добавлено через 15 часов 54 минуты
Из приличной книги набрал хороший пример, но "exe"-шник НЕ РАБОТАЕТ! Программа-среда - MASM32. Всё по автору, компиляция и линковка осуществляются без ошибок и файл *.exe создаётся. Но этот файл не запускается на выполнение!
Помогите, светлые головы!!! Почему созданный файл *.exe не желает работать?

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
;Программа вывода на консоль двух строк текста
;========================================
;________________________________________
.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  "Assembler Console Application",0
    mes         DB  "Hello, world!",0
    len_mes     EQU $-mes
    readBuf     DB  ?
    lenReadBuf  DD  1
    hStdIn      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    SetConsoleTitleA
        test    EAX, EAX
        jz      ex
        call    getout_hndl
        call    getinp_hndl
;----- Вывод сообщения в окно консоли -----
        push    EBX
        mov     EBX, offset mes
        mov     ECX, len_mes
        call    write_con
        pop     EBX
;----- Ожидание ввода и выход из программы -----
        call    read_con
ex:
        push    0
        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 hStdIn, 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    hStdIn
        call    ReadConsoleA
        ret
    read_con    endp
 
end start
;________________________________________
;========================================
0
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
08.05.2012, 13:07
VlTag, отладчик windows!
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
08.05.2012, 13:12
Код правельный, возможно не так компилируете. Данный код нужно компилировать как графическое приложение (/SUBSYSTEM:WINDOWS), а не как терминальное (/SUBSYSTEM:CONSOLE). Т.к. AllocConsole завершается ошибкой, если вызывающий процесс уже имеет консоль.
0
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 188
08.05.2012, 23:15  [ТС]
Глубокоуважаемый Iucius!
Очень Вам благодарен! Блеск! Конечно, я выпонял компиляцию исходного кода с помощью команд для создания консольного приложения.
В общем, теперь мой исполняемый файл прекрасно начал работать! Вы - МОЛОДЕЦ! Будем у Вас учиться профессионализму.
0
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 188
26.01.2014, 11:26  [ТС]
Всем спасибо за рекомендации!
Разобрался с пакетом TASM.
Привожу работающий код на основе приведённого выше.
Создавать программу *COM.
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
;====_ПРОГРАММА ИЗ СТАРОГО УЧЕБНИКА_====
;
PAGE    60,132
TITLE   ALLASC  (COM) Вывод на экран строки текста
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:NOTHING
        ORG     100H
BEGIN:  JMP     SHORT MAIN
 
;               Основная процедура:
;               ------------------
MAIN    PROC    NEAR
        CALL    B10CLR          ;Очистить экран
        CALL    C10SET          ;Установить курсор                 
        CALL    D10DISP         ;Вывести символ на экран
        RET
MAIN    ENDP
;               Очистка экрана:
;               --------------
B10CLR  PROC
        MOV     AX,0600H
        MOV     BH,07
        MOV     CX,0000         ;Левая верхняя позиция
        MOV     DX,184FH        ;Правая нижняя позиция
        INT      10H
        RET
B10CLR  ENDP
;               Установка курсора в 00,00:
;               -------------------------
C10SET  PROC
        MOV     AH,02
        MOV     BH,00
        MOV     DX,0000
        INT      10H
        RET
C10SET  ENDP
;               Вывод на экран строки текста:
;               -----------------------------
D10DISP PROC
msg DB '   Hello World!', 13, 10, '$'
        MOV AH, 09H
        MOV DX, OFFSET msg
        INT 21H
         RET                     ;Вернуться
D10DISP ENDP
 
CODESG ENDS
        END BEGIN
0
26.01.2014, 16:35

Не по теме:

долго же Вы с ним разбирались :D

0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
26.01.2014, 23:26
VlTag,
вам просто повезло, что программа работает. Она выполняет строку для вывода на экран, как код.
Ваша процедура:
Assembler
1
2
3
4
5
6
7
D10DISP PROC
msg DB '   Hello World!', 13, 10, '$'
        MOV AH, 09H
        MOV DX, OFFSET msg
        INT 21H
         RET                     ;Вернуться
D10DISP ENDP
А надо:
Assembler
1
2
3
4
5
6
7
D10DISP PROC
        MOV AH, 09H
        MOV DX, OFFSET msg
        INT 21H
         RET                     ;Вернуться
msg DB '   Hello World!', 13, 10, '$'
D10DISP ENDP
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2014, 23:26

Идея! очень полезная программа!
Собственно, возникла идея! Необходима программа которая мне очень поможет! Суть: Программа, запрещает пользоваться флешками, но с...

Нужна любая полезная программа.
ЛЮДИ,МНЕ НУЖНА ПРОГРАММА,АБСОЛЮТНО ЛЮБАЯ,НО ЧТОБЫ ОНА БЫЛА ПОЛЕЗНАЯ НЕ ТОЛЬКО ДЛЯ МЕНЯ,НО ДЛЯ ОКРУЖАЮЩИХ...ЕСЛИ ЕСТЬ У КОГО ГОТОВЫЕ,ТО...

Самая короткая программа
Напишите самую маленькую(малоёмкую) программу на ассемблере какую вы знаете.

Самая первая программа в C++builder
Всем доброго дня суток! У меня такая проблема, хочу научиться работать с программой C++builder. Скачал саму программу, самоучитель. Когда...

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru