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

Программа для Windows

12.03.2012, 18:53. Показов 1262. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем! В учебнике по ассемблеру имеется код проги:
Assembler
1
2
3
4
5
6
7
8
9
.data
Caption db 'Моя первая программа.',0
Text db 'Всем привет!',0
 
.code
start:
invoke MessageBox,0,Text,Caption,MB_OK
invoke ExitProcess,0
.end start
и инструкция для создания экзешника на масме, но у меня масма нету. Вопрос: как скомпоновать данный код на ТАСМе?
заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2012, 18:53
Ответы с готовыми решениями:

32-разрядная программа для windows
Помогите пожалуйста. Использую masm32. Выполняю Project -> Assemble & Link в qeditor. Вот код: .386P .model flat ,stdcall ...

Программа для определения данных текущих процессов ОС Windows
Тема звучит так "Реализация программ определения данных текущих процессов Windows" Помогите кто сможет, это срочно! нужна как вы...

Скрипт или программа для автоматизации настроек в Windows XP и Windows 7
Доброго времени суток, коллеги! Имеются ПК на ОС Windows 7 (иногда XP)? что необходимо: С одного файла (батник,скрипт, на любом...

18
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
12.03.2012, 19:23
прога:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    .386
    .model flat, stdcall
    includelib c:\tasm\lib\import32.lib
    
    EXTERN   MessageBoxA:NEAR
    EXTERN   ExitProcess:NEAR   
    
.data
       Caption db 'Моя первая программа.',0
       Text db 'Всем привет!',0
.code
start:
    push 0
    push offset Caption
    push offset Text
    push 0
    call MessageBoxA
    
    push 0
    call ExitProcess
end start
батник:
Assembler
1
2
3
4
c:\tasm\bin\TASM32 /ml prog.ASM
c:\tasm\bin\TLINK32 -aa prog.OBJ
pause
prog.exe
1
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
12.03.2012, 19:34
Цитата Сообщение от Искандар
данный код на ТАСМе?
Вы любите наступать на грабли?
Возьмите FASM, доку(рус.) и IDE(рус.)
0
Заблокирован
12.03.2012, 19:41  [ТС]
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Возьмите FASM, доку(рус.) и IDE(рус.)
на первых порах пойдет и тасм)

Добавлено через 49 секунд
а что значит NEAR
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
12.03.2012, 20:00
Цитата Сообщение от "Ассемблер для Windows" Пирогов.В.Ю. Посмотреть сообщение
Может возникнуть вопрос о типе NEAR. Дело в том, что в операционной системе MS DOS тип NEAR означал, что вызов процедуры (или безусловный переход) будет происходить в пределах одного сегмента. Тип FAR означал, что процедура (или переход) будет вызываться из другого сегмента. В операционной системе Windows реализована так называемая плоская модель, когда всю память можно рассматривать как один большой сегмент. И здесь логично использовать тип NEAR.
PS: найди её, там много интересного...
1
Заблокирован
12.03.2012, 20:44  [ТС]
Большое спасибо!

Добавлено через 39 минут
это снова я! Не подскажите как сделать не экзешник, а ком прогу?
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
12.03.2012, 20:46
из этой проги сделать .com?
0
Заблокирован
12.03.2012, 20:49  [ТС]
нет, в общем виде батник как должен выглядеть?
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
12.03.2012, 20:51
Assembler
1
2
c:\tasm\bin\tasm prog.asm
c:\tasm\bin\tlink /t  prog.obj
1
Заблокирован
12.03.2012, 21:39  [ТС]
и еще раз спасибо!

Добавлено через 47 минут
Вопрос по циклам: синтаксически программа верная, но компилятор ругается: Near jump or call to differenet CS
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CSEG segment
org 100h
Begin:
 mov cx, 3
 
Label_1: 
 mov ah, 9
 mov dx, offset message
 int 21h
 loop Label_1 ;здесь тормозит
 
 mov ah, 10h
 int 16h
 int 20h
 
message db 'hello world!$'
CSEG ends
end Begin
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
12.03.2012, 21:45
м/у 2 и 3 вставь:
Assembler
1
   assume cs:CSEG,ds:CSEG
0
Заблокирован
12.03.2012, 21:49  [ТС]
А разве в в ком проге сегментные регистры не устанавливаются сами на начало сегмента??
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
12.03.2012, 21:53
ну в твоём варианте, походу - нет.
если записать в таком виде:
Assembler
1
2
3
4
5
6
7
8
9
        .model     tiny
        .code
        org        100h
start:  mov        ah,9
        mov        dx,offset message 
        int        21h
        ret 
message db         "Hello World!",0Dh,0Ah,'$'
        end        start
то надобность в assume отпадает..
0
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
13.03.2012, 14:29
Assembler
1
2
3
CSEG segment
assume CS:CSEG
org 100h
0
Заблокирован
13.03.2012, 14:31  [ТС]
я работаю на тасме, и там без assume не проходит, а на масме все и без него идет, странно однако.
0
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
13.03.2012, 15:02
zzzyyyxxx, Как раз для Tasm и написал:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Turbo Assembler  Version 3.2        13/03/12 14:57:19       Page 1
t1.asm
 
      1 0000                 .model tiny
      2 0000                 .code
      3                  org 100h
      4 0100                 Begin:
      5 0100  B9 0003             mov cx, 3
      6
      7 0103                 Label_1:
      8 0103  B4 09           mov ah, 9
      9 0105  BA 0112r            mov dx, offset message
     10 0108  CD 21           int 21h
     11 010A  E2 F7           loop Label_1 ;здесь тормозит
     12
     13 010C  B4 10           mov ah, 10h
     14 010E  CD 16           int 16h
     15 0110  CD 20           int 20h
     16
     17 0112  68 65 6C 6C 6F 20 77+  message db 'hello world!$'
     18       6F 72 6C 64 21 24
     19                  end Begin
0
Заблокирован
13.03.2012, 15:12  [ТС]
а разьве для .com-программ модель памяти нужна?
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
13.03.2012, 15:13
Цитата Сообщение от Искандар Посмотреть сообщение
на масме все и без него идет, странно однако.
есть такое объяснение:
Цитата Сообщение от Калашников Олег Посмотреть сообщение
TASM выдает ошибку: Near jump or call to different CS.
Я предложил вставить строку assume cs:CSEG. Что же происходит?
Дело в том, что эта строка указывает Ассемблеру на привязку сегментного регистра CS к нашему сегменту (CSEG). MASM ассемблирует прекрасно и без этой строки. Если оператор assume отсутствует, то MASM как бы по умолчанию вставляет ее автоматически.

Другое дело TASM. Он, встретив в программе строки вида:
Assembler
1
2
3
   loop Label_1
   jmp Label_2
   call Procedure
не может "понять" к какому сегменту следует обратиться (CS, DS, ES) и выдает сообщение об ошибке.

Как уже говорилось, мы пишем com-файлы в которых всего один сегмент (мы обзываем его CSEG). Если вы создадите еще один (например, DSEG), то компоновщик (link.exe), при попытке создать com-файл, выдаст ошибку.

Чтобы полностью закрыть данную тему, привожу полный вид разбираемой нами строки:

Assembler
1
   assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
Этим мы указываем Ассемблеру на то, что сегментные регистры CS, DS, ES, SS будут указывать на наш единственный сегмент.
0
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
13.03.2012, 16:15
Она нужна для директивы .code
Assembler
1
2
3
4
      1                  ;.model tiny
      2                  .code
**Error** t1.asm(2) Model must be specified first
      3                  org 100h
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2012, 16:15
Помогаю со студенческими работами здесь

Программа / драйвер для сжатия оперативной памяти в Windows XP (Windows NT 5.X)
Требуется софтовое сжатие (именно сжатие, а не дефрагментация, упорядочивание, опрос программ о количестве памяти, которая им не нужна) для...

Программа для решения квадратных уравнений, переписать для Windows Forms
1) class Program { static void Main(string args) { float a = 0; float b = 0; ...

Программа для Windows XP на Windows 10
Имею програму изучения английского. она работает на windowsXP, но тепер хочю запустить на windows10, но она неработает. есть возможност её...

Программа для Windows
Нужно написать программу, которая записывает в отдельный блокнот все символы, набиравшиеся с клавиатуры. Заранее благодарен.

Программа ПРОВОДНИК для Windows 7
Здравствуйте! У меня руки чешутся, заражЁн революционными преобразованиями — а знаний нет! Помогите, пожалуйста, НОВАТОРУ. Кто чем может…...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru