Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Inomezi
0 / 0 / 1
Регистрация: 24.04.2015
Сообщений: 132
1

Исправить ошибку "16-разрядная подсистема MS DOS"

07.06.2015, 23:04. Просмотров 603. Ответов 7
Метки нет (Все метки)

Помогите найти ошибку,при компиляции когда я уже запускаю .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
model small
.stack 100h
.data
ch1 db 'a'      
ch2 db 'b'
ch3 db 'c'
ch4 db 'd'
ch5 db 'e'
.code
start:
mov ax,@data
mov ds,ax
mov al,ch1     
call bukva      
mov al,ch2     
call bukva
mov al,ch3
call bukva
mov al,ch4
call bukva
mov al,ch5      
call bukva
mov ah,4ch      
int 21          
bukva proc near 
mov ah,02h      
int 21          
ret
bukva endp
end start
end
0
Миниатюры
Исправить ошибку "16-разрядная подсистема MS DOS"  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2015, 23:04
Ответы с готовыми решениями:

Ошибка. 16-разрядная подсистема MS-DOS
Программа не хочет запускаться в turbo debugger. Выскакивает ошибка. Хотя вчера...

Как исправить ошибку "warning LNK4089: all references to "winmm.dll" discarded by /OPT:REF"
В данном коде выдает ошибку "warning LNK4089: all references to "winmm.dll"...

Выходит ошибка Необработанное исключение в "0x0007102f" в "Lab08.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00078000". Как исправить
.586 .model flat, stdcall option casemap :none ; case sensitive ; Раздел...

Как исправить ошибку при линковке "Could not delete"
Программа при линковке выдает "Could not delete:" и имя файла. Как можно...

Как исправить ошибку "Near jump or call to different CS"?
Почему Tasm показывает ошибку в 11 строке? CSEG segment org 100h beg: ...

7
tahir_
159 / 100 / 25
Регистрация: 18.05.2015
Сообщений: 474
07.06.2015, 23:11 2
И, запустить 16 битное приложение Винда не даст (если конечно она не 95 и 98),
поставь dosbox или виртуалку с dos
0
proc3nt
волшебник
652 / 512 / 153
Регистрация: 26.05.2012
Сообщений: 1,439
08.06.2015, 00:56 3
все гораздо проще и прозаичнее. скажем так - ошибочки есть и они жизненноважные.
первым делом нужно поставить точку перед моделью памяти
Assembler
1
.model small
второе. прерывание 21 здесь некорректно. есть прерывание 21h (в десятичной системе 33) и оно должно употребляться при использовании функции выхода из программы и при выводе символа на консоль.
третье. внутри процедуры символ не будет выводиться. так как перед вызовом функции bukva символ помещается в регистр al. а при выводе символа второй функцией символ должен быть помещен в регистр dl.

вот посмотри переделанный код. и сравни со своим.
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
.model small
.386
 
.data
ch1 db 'a' 
ch2 db 'b'
ch3 db 'c'
ch4 db 'd'
ch5 db 'e'
 
.stack 100h
 
.code
start:
mov ax,@data
mov ds,ax
 
mov dl,ch1 
call bukva 
mov dl,ch2 
call bukva
mov dl,ch3
call bukva
mov dl,ch4
call bukva
mov dl,ch5 
call bukva
 
mov ah,01h
int 21h
 
mov ah,4ch 
int 21h
 
bukva proc near 
mov ah,02h 
int 21h 
ret
bukva endp
end start
и все будет у тебя ok. с тебя печенюшка) ну или на крайний случай спасибо не забудь нажать.
0
Ethereal
Нарушитель
4521 / 1815 / 235
Регистрация: 17.02.2013
Сообщений: 2,709
08.06.2015, 06:46 4
Цитата Сообщение от tahir_ Посмотреть сообщение
И, запустить 16 битное приложение Винда не даст (если конечно она не 95 и 98),
Windows XP 32-разрядная вполне допускает запуск 16-битных приложений. С ограничениями на предмет добраться до портов ввода-вывода, но в остальном без проблем.
1
Mikl___
Автор FAQ
11899 / 6187 / 574
Регистрация: 11.11.2010
Сообщений: 11,198
08.06.2015, 07:31 5
Цитата Сообщение от Ethereal Посмотреть сообщение
С ограничениями на предмет добраться до портов ввода-вывода
А как обойти это ограничение рассказано в Зачем нужен драйвер и как написать простейший драйвер
0
Constantin Cat
1974 / 1062 / 367
Регистрация: 28.02.2015
Сообщений: 2,337
Завершенные тесты: 1
08.06.2015, 12:52 6
proc3nt
Цитата Сообщение от proc3nt Посмотреть сообщение
нужно поставить точку перед моделью памяти
Это тасм, он допускает отсутсвие точки.
0
Mikl___
Автор FAQ
11899 / 6187 / 574
Регистрация: 11.11.2010
Сообщений: 11,198
08.06.2015, 16:34 7
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Это тасм, он допускает отсутсвие точки
в режиме ideal допускает, в режиме masm-совместимости не должен
0
Constantin Cat
1974 / 1062 / 367
Регистрация: 28.02.2015
Сообщений: 2,337
Завершенные тесты: 1
08.06.2015, 16:57 8
По умолчанию стоит ideal, а masm ещё включать нужно.
0
08.06.2015, 16:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2015, 16:57

Исправить ошибку "Division by 0"
Привет. Не пойму почему, во втором DIV вываливается Division by 0. .MODEL...

16 разрядная подсистема ms-dos
выводит ету ошибку как только откомпилил при 1 запуске процессор ntvdm...

Исправить ошибку "FCB Unavailable"
DOSSEG .MODEL SMALL .STACK 100H .DATA Prompt db 13,10,"che kak?(y/n)$"...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru