Dmitrius Опубликовано 1 февраля, 2011 Автор Жалоба Поделиться Опубликовано 1 февраля, 2011 L0K1php - разучил случайно, жуткий язык.. Ни на одном языке нельзя писать такие богомерзкие конструкции..Пытаюсь его забыть и полностью перепости на питон для веба. Понятия не имею что в нем богомерзкого, вполне себе такой отличный язык... Ссылка на комментарий
JSTQ Опубликовано 1 февраля, 2011 Жалоба Поделиться Опубликовано 1 февраля, 2011 ты че на пары не ходишь локи... Ссылка на комментарий
FLoo Опубликовано 28 апреля, 2011 Жалоба Поделиться Опубликовано 28 апреля, 2011 Помогите решить задачу на ассемблереВ программе описать процедуру, которая вычисляет число неотрицательных элементов в массиве. Параметры передавать следующим образом:в ВХ – смещение массива;в СХ – число элементов в массиве;в АХ – результат вычислений (число неотрицательных элементов). Ссылка на комментарий
martinges Опубликовано 28 апреля, 2011 Жалоба Поделиться Опубликовано 28 апреля, 2011 команды которые тебе будут нужныcmpmovjmpaddпоработай с флагами)возможно push и pop в зависимости от специфики задачи незабудь как действует система стэк(LIFO) Ссылка на комментарий
sqrahak Опубликовано 3 мая, 2011 Жалоба Поделиться Опубликовано 3 мая, 2011 лампочка? Ссылка на комментарий
Aliprikon Опубликовано 4 мая, 2011 Жалоба Поделиться Опубликовано 4 мая, 2011 где можно учиться на программиста Ссылка на комментарий
smileman Опубликовано 7 мая, 2011 Жалоба Поделиться Опубликовано 7 мая, 2011 в интернете =) Ссылка на комментарий
danger Опубликовано 10 мая, 2011 Жалоба Поделиться Опубликовано 10 мая, 2011 в БГУ! Ссылка на комментарий
veryme Опубликовано 3 июня, 2011 Жалоба Поделиться Опубликовано 3 июня, 2011 Люди, помогите пожалуйста разобраться с лабами по архитектуре ЭВМ... что и как делает эта программа? (каждая строчка) *26assume cs:code, ds:data, ss:stacsdata segment msg1 db 50,55 dup('$') msg2 db 1,1 dup('$') msg3 db 50,55 dup('$') msg4 db 50,55 dup('$')data endsstacs segment db 128 dup(?)stacs endscode segmentprogram proc Far mov dx,data mov ds,dx mov ah,0ah mov dx,offset msg1 int 21h mov ah,02h mov dl,13 int 21h mov dl,10 int 21h mov ah, 0ah mov dx,offset msg2 int 21h mov ah,09h mov dx,offset msg1 inc dx inc dx int 21h;name mov ah,02h mov dl,13 int 21h mov dl,10 int 21h mov ah,0ah mov dx,offset msg3 int 21h mov ah, 09h mov dx, offset msg3 int 21h mov ah, 02h mov dl, 13 int 21h mov dl, 10 int 21h mov ah, 0ah mov dx, offset msg4 int 21h mov ah, 09h mov dx, offset msg4 int 21h mov ah,4ch int 21hprogram endpcode endsend program Ссылка на комментарий
martinges Опубликовано 3 июня, 2011 Жалоба Поделиться Опубликовано 3 июня, 2011 assume cs:code, ds:data, ss:stacs ;указание где какой сегмент находится data segment ;пошел сегмент данных msg1 db 50,55 dup('$') ;первое сообщение msg2 db 1,1 dup('$') ;второе сообщение msg3 db 50,55 dup('$') ;третье сообщение msg4 db 50,55 dup('$') ; четвертое сообщение;причем прям таки вся в россыпи долларов data ends ;закончился сегмент данныхstacs segment ;пошел сегмент стэка db 128 dup(?) ;выделение под него данныхstacs ends ; закончился сегмент стэкаcode segment ;пошел сегмент кодаprogram proc Far ; пошла процедурка mov dx,data ;указала на данные mov ds,dx ;указала на данные mov ah,0ah ;указываем параметр который говорит что мы вводим какую-то гадость mov dx,offset msg1 ;говорим где находится сообщение int 21h ; собственно прерывание на ввод mov ah,02h ;указываем параметр который говорит что мы выводим символ mov dl,13 ;код возврата каретки int 21h ; вывод этого символа mov dl,10 ; код перехода на новую строку int 21h ;вывод этого символа mov ah, 0ah ; аналогично mov dx,offset msg2 ;аналогично int 21h ; аналогично mov ah,09h ; указываем параметр который говорит что мы выводим сообщение 1 mov dx,offset msg1 ;указываем что выводим inc dx ; inc dx ; asm по рукой нету) не могу понять зачем)) но это сдвижка вперед int 21h; собственно вывод месаги1;name mov ah,02h ;опять символ mov dl,13 ;возврат каретки int 21h ;вывели mov dl,10;перенеслись на след строку int 21h;вывели mov ah,0ah ;хотим ввести строку mov dx,offset msg3 ;указываем куда int 21h ;вводим mov ah, 09h ;хотим вывести строку mov dx, offset msg3 ;указываем откуда int 21h ;вывод строки mov ah, 02h ; опять символ mov dl, 13 ;возврат каретки int 21h ; вывод mov dl, 10; перенеслись на след. строку int 21h;вывод mov ah, 0ah;хотим ввести строку mov dx, offset msg4 ;указываем куда int 21h ;вводим mov ah, 09h ; хотим вывести строку mov dx, offset msg4 ;указываем откуда int 21h ;вывод mov ah,4ch ;говорим выйти хочу int 21h ; возвращает в точку вызова program endp ; the end и жилиcode ends ;они end program ; долго и счастливо не прогонял программульку и не смотрел её работоспособность))) фиг его знает работает или нет))но как то так вроде бы Ссылка на комментарий
veryme Опубликовано 9 июня, 2011 Жалоба Поделиться Опубликовано 9 июня, 2011 спасибо =) а можно я немножечко обнаглею и еще 2 лабы выложу....с такой же просьбой....=)воть 1я.model tiny.stack 100h.data num1 db 45,12,56,72,48,56,90,24,1,19.codestart: mov si, 0 mov al, offset num1[si] inc simetka1: mov bl, offset num1[si] cmp al, bl jns metka mov al, blmetka: inc si cmp si, 9 js metka1 aam mov dl, ah mov dh, al or dl, 30h or dh, 30h mov ah, 02hint 21hxchg dl, dhint 21hmov ah, 4chint 21hend startи 2яassume cs:code,ds:datadata segment a db 3 dup(?)data endscode segmentprogram proc far mov si,0 mov dl,0METKA: mov ah,1h int 21h mov offset a[si],al mov ah,02h mov dl,0ah int 21h inc si cmp si,5 js METKA mov si,0 xor ax,ax mov al,offset a[si] inc si mov cl,offset a[si] add al,cl inc si mov cl,offset a[si] sub al,cl inc si mov cl,offset a[si] mul cl inc si mov cl,offset a[si] div cl aam mov dl,ah mov dh,al or dl,30h or dh,30h mov ah,02h int 21h xchg dl,dh int 21h mov ah,4ch int 21hprogram endpcode endsend programзаранее огромное спасибо! =) Ссылка на комментарий
martinges Опубликовано 10 июня, 2011 Жалоба Поделиться Опубликовано 10 июня, 2011 гммм а точно первая задачка пашет?) просто вот как то я запамятовал что такое aam(посыпаю голову пеплом )кстати model tiny самая маленькая программулька Ссылка на комментарий
veryme Опубликовано 11 июня, 2011 Жалоба Поделиться Опубликовано 11 июня, 2011 не знаю пашет или нет) я тож не помню, но гугл говорит, что команда AAM вычисляет распакованный десятичный результат с помощью деления числа в регистре AL на 10. Она помещает частное в регистр AH, оставляя остаток в регистре AL. Команда AAM устанавливает флаги нуля и знака в соответствии с результатом в регистре AL. Так как результат - распакованное десятичное число, знак всегда положителен, а знак нуля устанавливается равным 1, только если исходное число кратно 10 - т.е. если младшая значащая десятичная цифра равна 0. Остальные флаги после команды AAM остаются неопределенными. Флаг переноса теперь не имеет смысла, потому что умножение двух распакованных десятичных чисел никогда не дает результата, превосходящего число, представимое двумя десятичными цифрами. Программа также всегда может использовать команду AAM для деления двоичного числа в регистре AL на 10. В таком виде она может рассматриваться, как специальный случай команды деления, которая делит однобайтовое число в регистре AL на 10. Частное помещается в регистр AH, остаток - в регистр AL. Ссылка на комментарий
martinges Опубликовано 11 июня, 2011 Жалоба Поделиться Опубликовано 11 июня, 2011 Если честно, мозг себе сломал)) по первой задачке) скомпилировал её и получаю каждый раз разные ответы вроде бы в сегменте данных нашел циферки через отладчик) у меня вопрос такой))а что вы хотите получить результатом?) ипри задании не запакованного числа каждая циферка вроде бы должна содержать 8 бит... старшие биты нулевые, а младшие и есть собственно циферка.... но у вас заданы вроде как в запакованном виде(число из 2 цифр кодируется одним байтом)....?P.S. то что после aam значит вывод цифр на экран там где {or 30h} это тупо представление вашей цифры в ascii коде, а вот то что идет до aam для меня загадка Ссылка на комментарий
smileman Опубликовано 11 июня, 2011 Жалоба Поделиться Опубликовано 11 июня, 2011 aam - получение числа из bcd формата // вроде так )) Ссылка на комментарий
martinges Опубликовано 11 июня, 2011 Жалоба Поделиться Опубликовано 11 июня, 2011 )) я регистры просматривал он из 5h слепил ah=9 al=5 с этим я полностью согласен))) а что за действия он производил до этого) не пойму))гыыыы эврика я не так компилил)))) это нахождение максимального из ряда)))).model tiny ;моделька памяти.stack 100h ; для стэка.data ; пошли данныеnum1 db 45,12,56,72,48,56,90,24,1,19 ; сами данные собственно.code ;пошел кодstart: mov si, 0 ;обнуляем бегунокmov al, offset num1[si] ;считали первый элементinc si ;увеличили счетчикmetka1: mov bl, offset num1[si] ; считали si элемент рядаcmp al, bl ;сравнили какой из них большеjns metka ; al больше прыгаем на метку) смотрим состояние флажкаmov al, bl ; ух ты bl больше))metka: inc si ; увеличиваем бегунокcmp si, 9 ; а мы дошли до конца ряда?js metka1 ; нефига подобного не дошли aam ; хотим получить удобоваримое число а так у нас валяется 5a а станет ah=9h al=00hmov dl, ah ; скидываем циферки для вывода)mov dh, al ;скидываем цифирки для выводаor dl, 30h ; надо привести к ascii коду иначе выдаст символы из начала типа сердечек всяких квадратиков or dh, 30h ; аналогичноmov ah, 02h ; указываем что надо вывести символint 21h ;выводим егоxchg dl, dh ;поменяли символы)) ведь и второй символ надо вывести int 21h ; выводимmov ah, 4ch ;пора выходитьint 21h ; выходимend start ; и жили они долго и счастливо а во второй задачке стэк куда то делся..... Ссылка на комментарий
ВТЫЧ Опубликовано 15 июня, 2011 Жалоба Поделиться Опубликовано 15 июня, 2011 А почему он выводит значение 32, что оно означает, по идеи должно выводить максимальное значение как я понимаю... Ссылка на комментарий
martinges Опубликовано 16 июня, 2011 Жалоба Поделиться Опубликовано 16 июня, 2011 формат тини я компилил его как com файл и все нормально работает)) а в exe выдает гадость) Ссылка на комментарий
ВТЫЧ Опубликовано 16 июня, 2011 Жалоба Поделиться Опубликовано 16 июня, 2011 Пытаюсь его в com скомпить, да выдаёт "Cannot generate COM file : stack segment present" Ссылка на комментарий
martinges Опубликовано 16 июня, 2011 Жалоба Поделиться Опубликовано 16 июня, 2011 к сожалению в таком виде он не компилился я его переработал в удобный мне формат)proga segmentassume cs:proga,ss:proga,ds:proga,es:progaorg 100hstart: mov si, 0mov al, offset num1[si]inc simetka1: mov bl, offset num1[si]cmp al, bljns metkamov al, blmetka: inc sicmp si, 9js metka1aammov dl, ahmov dh, alor dl, 30hor dh, 30hmov ah, 02hint 21hxchg dl, dhint 21hint 20hnum1 db 45,12,56,72,48,56,90,24,1,19proga endsend startвот что то типа такого я ваял)) впринципе тоже самое) попробуй скомпилить под рукой нету asma незнаю может накосячил где-нить) Ссылка на комментарий
ВТЫЧ Опубликовано 16 июня, 2011 Жалоба Поделиться Опубликовано 16 июня, 2011 martingesСпасибо, работает всё)) подогнал переделал под себя)) Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти