Консультация № 189106
06.04.2016, 16:13
0.00 руб.
0 9 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Только начал изучать Assembler по книге Калашникова О.Г. "Учимся программировать"
Программа из листинга 10.4 не корректно работает - она запускается, завершается, но в проверочном примере (10.5) никаких изменений не происходит. Тоже самое происходит и в AFD, только если в отладчике запустить сначала 10.4 и после 10.5 то в 10.5 прерывание Int 21
уже не заходит во "внутрь" команды а прыгает на прежнию к команду mov dx,offset String и обратно.
Хотя до этого все примеры работали.

Я компилирую и запускаю com файлы на виртуальной машине под Windosw 32 bit. Если не трудно объясните пожалуйста сразу почему .com файлы не запускаются под Windows 64 bit? Для компиляции использую TASM и MASM32. Отладчик AFD



Приложение:
Вот мой код:
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Start:

jmp Init

Int_21h_proc proc
cmp ah,9
je Ok_09

jmp dword ptr cs:[Int_21h_vect]

Ok_09:
push ds
push dx
push cs
pop ds

mov dx,offset My_string
pushf
call dword ptr cs:[Int_21h_vect]

pop dx
pop ds
iret

Int_21h_vect dd ?

My_string db 'My!$'
int_21h_proc endp

Init:
mov ah,35h
mov al,21h
int 21h

mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es

mov ax,2521h
mov dx,offset Int_21h_proc

int 21h

mov dx,offset Init
int 27h

CSEG ends
end Start


------------------
System Information
------------------
Machine name: DESKTOP-HD3456G
Operating System: Windows 10 Pro 64-bit (10.0, Build 10240) (10240.th1_st1.160222-1812)
Language: English (Regional Setting: English)
System Manufacturer: To Be Filled By O.E.M.
System Model: To Be Filled By O.E.M.
BIOS: BIOS Date: 11/17/11 20:45:13 Ver: 04.06.04
Processor: AMD FX(tm)-4100 Quad-Core Processor (4 CPUs), ~3.6GHz
Memory: 8192MB RAM
Available OS Memory: 8170MB RAM
Page File: 4418MB used, 5030MB available
Windows Dir: C:\WINDOWS
DirectX Version: 12

Обсуждение

давно
Посетитель
7438
7205
06.04.2016, 17:29
общий
06.04.2016, 17:29
Адресаты:
Здравствуйте!
1) 16-битные программы не запускаются под 64-битными ОСями в принципе. Их не пускает сама ОСь.
2) чтобы проверочная программа 10.5 показала изменение вектора, необходимо, чтобы они вместе с 10.4 работали в одном ДОС-окне
Запустите CMD, а из него уже сначала первую, потом вторую.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
06.04.2016, 17:40
общий
Адресаты:
Кстати, для компиляции досовских программ MASM32 не годится.
Он для создания 32-битных программ для Windows
Пользуйтесь MASM
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
06.04.2016, 17:42
общий
Адресаты:
Вместо виртуальной win32 попробуйте DosBox
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
06.04.2016, 17:44
общий
Адресаты:
Все работает, и в DOSBox'e и в CMD.
Прикрепленные файлы:
9b8ab1f3ffe8eea4ddbf36dd17595ced.jpg
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
07.04.2016, 23:56
общий
Адресаты:
У Вас получилось?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400156
9
08.04.2016, 01:53
общий
Адресаты:
Да! Большое спасибо, я просто не знал можно ли здесь отвечать на ответы модераторов.
Скажите пожалуйста я сейчас прохожу 11 главу и так понимаю что мне надо обязательно файлы приложения.
Так как в листингах пишется не весь код (11.1 "Скелет нашей будущей оболочки"). Скажите где можно скачать приложения.
Зарание БОЛЬШОЕ СПАСИБО!!!
давно
Старший Модератор
31795
6196
08.04.2016, 11:12
общий
Адресаты:
Вам нужен пример 11?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
400156
9
08.04.2016, 11:59
общий
Всё спасибо, нашёл все примеры. Буду потихоньку разбираться.
давно
Посетитель
7438
7205
08.04.2016, 12:45
общий
это ответ
Здравствуйте, novice!
1) 16-битные программы не запускаются под 64-битными ОСями в принципе. Их не пускает сама ОСь.
2) чтобы проверочная программа 10.5 показала изменение вектора, необходимо, чтобы они вместе с 10.4 работали в одном ДОС-окне
Запустите CMD, а из него уже сначала первую, потом вторую.
3) Для компиляции досовских программ MASM32 не годится. Он для создания 32-битных программ для Windows. Пользуйтесь MASM
4) Виртуальная win32 - не лучший способ, лучше DosBox
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа