Лови! Нашёл отличный интерактивный справочник по досу под дос (для досбокса): https://assembler-code.com/programmnoe-obespechenie/ - Программное обеспечение для DOS - D\UTILS\T_HELP
Спасибо. Гляну, как наиграюсь с эмулем. Вообще, занятное развлечение я себе на ровном месте нашел, на старости лет
Ну, вообще досбокс просто затягивает в мир доса Вроде как ещё вчера в нём Дум гонял, а сегодня уже по старой памяти в Турбопаскакалях и Тасме скачешь Это ещё не считая охулиарда легендарных игрушек под дос
Э... Я из мира DOS никуда и не уходил. У нас толпа управляшек под MS-DOS, так что у меня все в нативе, без всяких DOSBox. Вот это вот - сейчас стоит на рабочем столе. На данной фотке у компа кнопка "турбо" отжата, дабы получить аутентичный один попугай в SysInfo... Позавчера со склада выволок, расставил... Шеф в кабинет заглянул (он у меня лет на 15 меня моложе) и восторженно изрек - "Древнее зло пробудилось!". Я покосился и ответствовал - "Это не зло. Вот если бы я ДВК-3 расставил, другое дело!" Показывал юнлингам и падаванам что такое "Prince of Persia" в EGA и "Elite" в CGA. Поржали... Не, надо понимать - комп на фотке, это музейный экспонат. А управляшки - это пром-пц на базе Fabiatech 2400, которые в свою очередь сделаны на базе VortexDX86
Старший показал (его сегодня препод вальнул при попытке сдачи), че там за лабораторка собственно... Посчитать на асме и вывести результат. Округленный до целых. Я сначала долго тер глаза, потом позвал жену, вместе два разА проверили порядок действий... Потом я полчаса (с двумя проверками) крутил это дело в экселе (мне так удобнее), считая результат. Округленный - 72. У меня один вопрос. Что курят преподы бама и нахера ж такое считать таким способом... упд. но, по факту ответ 65, потому как по условию работа идет только с целыми числами, дробная часть отбрасывается, в результате получается лютая дичь с точки зрения арифметики, но сука - не с точки зрения препода ассемблера. Я хуею в этом зоопарке...
В целых - 65. Вполне типовая задача, фигня. Ради интереса погугли про способы округления чисел, вот там веселуха полная
У меня один вопрос. Нахера такое (в смысле ТАК) считать? Т.е., какой практический смысл в этом всем. Чисто учебная задрочка?
Может они потом будут на АСМ-е тупые контроллеры зенитных ракет программировать, где такой точности достаточно.
Ну примерно так мне камрад-ровесник в свое время профильную кафедру ровно того же ВУЗа закончивший и объяснил. Что данная задрочка - прелюдия к работе со всякими микроконтроллерами. И для ряда задач такой "точности" вполне достаточно. А если округлять до десятков, то... что 72, что 65 - "шесть-семь, какая в жопу разница..." Только вот есть определенная разница между "округлить" и операцией trunc...
Успокойтес. Представьте, что у вас есть 8-ми битный чип от стиралки, у которого максимум умножение есть в инструкциях, а вам дроны за горизонтом сбивать нужно. Ну и что? Операцию сдвига то у вас никто не отберёт. Представляем числа в виде N*2^-3 (сдвиг влего на 3, к примеру) и работаем с повышенной точностью.
Короче... "Я сделаль...". Оно работает, да. Считает. С минимумом плясок с бубном. Даже без пуш-поп, бгг... Можно было только в L-половинах регистров ковырять, но это я на всякий случай, если по этому шаблону надо будет че-то другое делать... Вы только имейте ввиду, что я писал только на васике так-сяк ну и паскаль где-то в глубине памяти, в следовых количествах (то есть, если я на нем сейчас сяду писать, да впрочем как на васике - надо будет справочник по синтаксису под носом держать. Не помню нихера... А так, в эмуле работает, в виртуалке - тасмом компилится и линкуется, работает. Честно выдает свое значение 65. Можно переделать на переменные, но вроде как в задании такого не требуют. ----------------------------------------------------------- .model small .stack 200h .data var_al1 db ? var_ah1 db ? var_al2 db ? var_ah2 db ? var_al3 db ? var_ah3 db ? var_al4 db ? var_ah4 db ? .code ; ; ; left part equalition calculate module mov al,4 mov bl,6 mul bl add al,7 mov var_al1, al ;move result 7+4*6 to var_al1/var_ah1 mov var_ah1, ah ; mov ax,0000h ;clear ax ; mov al,5 mov bl,2 div bl mov bl,13 mul bl mov var_al2, al ;move result 5/2*13 to var_al2/var_ah2 mov var_ah2, ah ; ; mov ax,0000h ;clear ax mov bx,0000h ;clear bx mov al,var_al1 mov ah,var_ah1 mov bl,var_al2 mov bh,var_ah2 add ax,bx mov var_al2, al ;move result (7+4*6)+ (5/2*13) to var_al2/var_ah2 mov var_ah2, ah ; ; ;left part equalition complete calculated with result 57(DEC) in var_al2/var_ah2 ; ;right-upper part equalition calculate module mov al,14 mov bl,4 sub al,bl mov bl,2 div bl mov var_al3,al mov var_ah3,ah ; (14-4)/2 move to var_al3/var_ah3 mov ax,0000h ;clear ax mov bx,0000h ;clear bx mov al,17 mov bl,6 mul bl ; 17*6 result in al/ah mov bl,var_al3 mov bh,var_ah3 add ax,bx ; ((14-4)/2)+(17*6) result in ax mov var_al1, al ;move result ((14-4)/2)+(17*6) to var_al1/var_ah1 mov var_ah1, ah ; ;right-upper part equalition complete with 107(DEC) result ; ;right-lower part equalition module mov ax,0000h ;clear ax mov bx,0000h ;clear bx mov al,36 mov bl,4 sub al,bl mov bl,3 div bl add al,2 mov var_al4,al ;move result ((36-4)/3)+2 to var_al4/var_ah4 mov var_ah4,ah ;right-lower part equalition complete with result 12(DEC) ; ;right part equalition final calculate module mov ax,0000h ;clear ax mov bx,0000h ;clear bx mov al,var_al1;incert upper-right result right part from var_al1 (107 DEC) mov ah,var_ah1;incert upper-right result right part from var_ah1 (empty) mov bl,var_al4;incert lower-right result right part from var_al4 (8 DEC) mov bh,var_ah4;incert lower-right result right part from var_al4 (empty) div bl ;right part equal result in al with 8(DEC) mov var_al3, al ;move result to var_al3/var_ah3 mov var_ah3, ah ; ; ; ;now we have left part equal in var_al2/var_ah2 and right part in var_al3/var_ah3 mov al,var_al2 add al,var_al3 ;display out from ax via bx use aam instruction ;mov al, var_al2 ;mov ah, var_ah2 aam add ax,3030h mov bx,ax mov dl,bh mov ah,02 int 21h mov dl,bl int 21h mov ah,4ch int 21h end
Продолжаю ржать конем и биться в истерике. Сделал еще одну лабу. Тоже приняли. Тут уже посерьезнее было. Условные переходы, менюшка... Вхожу во вкус, по ходу дела! По своим же практикантам - выволок сегодня из недр кладовки вот такое чудо...