![]() |
PavelAR, увы, но не запускается вообще :(
|
В XP вроде должна нормально запускаться.
Ладно, завтра скину что-нить другое по 3D. |
Может, тут фишками какими делиться или интересными вопросами для студентов?:) Я веду "Архитектуру ЭВМ и систем", поэтому это очень актуально :)
Ощущаю дефицит в коротокоформлируемых, но требующих некоторое понимание, вопросах. Типа. 1. Создаем в Паскале короткий (но лучше длинный, если время есть) цикл: for i:=1 to 20 do begin a:=a+b; b:=a+b; end; При выполнении по шагам с удивлением обнаруживаем, что на первом проходе переменная i равна не 1, как мы написали в коде, а, наоборот, 20. Почему? 2. Что делает следующий ассемблерный код: mov ch,5 mov ah, 51h xor al,al sub ah,ch int 21h |
Цитата:
Добавлено через 4 минуты Цитата:
Переменные i,a,b как объявлены ? |
saovu,
Цитата:
a,b - не важно какие, например, тоже integer Цитата:
|
Цитата:
Добавлено через 15 минут Проверил в Delphi. Да, 20. Видимо оптимизация цикла так работает (на ноль проверять выгоднее) в случае когда переменная цикла внутри не используется. |
saovu,
Цитата:
Цитата:
Может, поделитесь подобными вопросиками?:) |
Цитата:
Цитата:
:) А серьезно - нет у меня таких вопросов в готовом виде. Для преподавания мне они точно не нужны - видели б вы тех студентов, с которыми я работаю. Дай Б-г там к 5-му курсу двое-трое из группы такие вопросы осилят. Смешно сказать: на этой специальности готовят какбыпрограммистов (Специальность в дипломе "Математик. Системный программист"), а из всех преподов кафедры, программистов с профильным ВО и боевым опытом - только я (да и я уволюсь сейчас нахрен). Так вот студентов на 1-ом курсе учать, что в языке C "#include <xxx.h>" означает ПОДКЛЮЧЕНИЕ БИБЛИОТЕК. Я конечно пытаюсь переучивать (я на 2-ом курсе) - понимает (да и вообще пытается и хочет понять) один из десяти. Так что "вопросики" я могу приводить только из своего же студенческого прошлого или трудовой деятельности. А это вспоминать надо. Но если уж очень хотите, вот сходу пара вопросов. По тем ассемблерным листингам, что я привел. 1. Код из первого листинга Old_2Fh_Vector: Entry: jmp near ptr Begin ; эта команда занимает три байта fourthbyte db 0 Old_17h_Vector dd 0 Пояснить шо значат эти танцы с двумя метками Old_2Fh_Vector и Entry (метка, кстати, могла бы быть и одна, две - для ясности) 2. Код из второго листинга MACRO Jmp_Next seg ; очистка очереди команд db 0EAh ; jmp dw $+4 ; адрес следующей команды dw seg ; сегмент или селектор ENDM Что вообще означает код в этом макросе, и для чего-почему он используется строго СРАЗУ ЖЕ после включения защищенного режима процессора. |
Цитата:
mov ecx,20 a0: add eax,ebx add ebx,eax loop a0 Комнада loop уменьшает ecx на 1 и если результат больше 0, то переход на метку а0. А компиляция "в лоб" дала бы более длинный код: mov ecx,1 a0: add eax,ebx add ebx,eax inc ecx cmp ecx,20 jbe a0 Цитата:
mov ax,4C00h int 21h Короче стандартное завершение DOS-программы (код возврата = 0). Цитата:
смещение) обработчика прерывания, по совместительству выполняющая роль исполняемого кода (jump на метку begin). При установке новых обработчиков переменная разумеется модифицируется, и уже не годится для исполнения :) Цитата:
16-битное смещение зависит от положения точки применения макроса в исходном коде, 16-битный сегментный адрес берется из того, что передается как параметр, который тоже подставляется на этапе компиляции. Подобный прием используется везде, где требуется сбросить конвейер процессора, чтобы избежать конфликтов. |
Цитата:
|
Текущее время: 15:31. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
© 2001—2025, «Аспирантура. Портал аспирантов»