Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а в этой стране всё через жопу: или программист без диплома или диплом без программиста...

Всего записей: 24115 | Зарегистр. 06-12-2002 | Отправлено: 19:02 12-09-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Диплом без программиста... брр, как страшно... особенно на ночь...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 21:23 12-09-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
а ты во всякие "задачи по...", в кот. программисты делают дипломы для "без программистов" не ходи... особенно на ночь...

Всего записей: 24115 | Зарегистр. 06-12-2002 | Отправлено: 16:54 13-09-2012
Maksim_Avrorov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго дня. Столкнулся с вопросом, почему программа которая должна выбирать самое большое число из массива делает это, но выдаёт вместо 39 только 9. Может кто то знает ответ?
 
data segment
arr db 1,2,5,30,57,8,6,4;
data ends
 
code segment
assume ds:data, cs:code
start:
mov ax,data
mov ds,ax
mov dl, arr
mov cx,7
mov bx,1
cnt:
cmp dl, arr[bx]
jg next
mov dl, arr[bx]
next:
inc bx
loop cnt  
mov ah, 02h
int 21h
mov ax,4c00h
int 21h
code ends
end start

Всего записей: 14 | Зарегистр. 07-04-2012 | Отправлено: 17:33 09-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
mov ax,data
mov ds,ax  

ds  у тебя и так на сегмент даты установлен

Цитата:
assume ds:data,  

 
 
Добавлено:
http://ziplib.com/emu8086/
вот эмулятор скачай, в него код засунь пошагово прогони и увидишь что у тебя все смешалось
ключ в инетенайдешь

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:44 09-10-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maksim_Avrorov

Цитата:
Столкнулся с вопросом, почему программа которая должна выбирать самое большое число из массива делает это, но выдаёт вместо 39 только 9

Если для выдачи результата используется функция 2 21 прерывания, то всё правильно она выдаёт.
'9'='0'+9=39. Функция-то символ ждёт. Перевести свой результат в символьную форму - это задача программиста, а не системы.
 


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:07 09-10-2012
Maksim_Avrorov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кажется понял, число 39 это код символа '9'. Тогда очевидно надо другую функцию найти!
Спасибо.
 На счёт сегментов то это я с книги брал там написано следующее:
                     
                    code segment
                    assume cs:code, ds:data
                    mov ax, data
                    mov ds, ax
                    ................................
Про сегменты не понял.......

Всего записей: 14 | Зарегистр. 07-04-2012 | Отправлено: 19:51 09-10-2012
blaro



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maksim_Avrorov

Цитата:
 code segment  

Означает что это сегмент кода
 

Цитата:
mov ax, data
     mov ds, ax  

ds получает адрес сегмента данных. Скорей всего сегмент данных определен так

Код:
 
data segment
какие-то переменные
data ends
 

 

Цитата:
assume cs:code, ds:data  

Не знаю как правильно и понятно объяснить. Кто нибудь кто знает, объясните пожалуйста.
 


----------
Оптимистично смотрю на мир глазами убийцы.

Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 21:20 09-10-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Не знаю как правильно и понятно объяснить. Кто нибудь кто знает, объясните пожалуйста.

"assume" - это указание компилятору, через какой сегментный регистр он должен адресовать соответствующий сегмент. Например, если в вышеприведённом коде указать не "assume ds:data", а "assume es:data", то и обращение к переменным в сегменте "data" будет идти не через ds, а через es. И оператор "mov dl, arr" будет оттранслирован в "mov dl, es:arr", с префиксом замены сегмента.
Задача программиста - обеспечить, чтобы в сегментных регистрах находились адреса именно тех сегментов, к которым они привязаны директивой "assume".

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:39 09-10-2012
Maksim_Avrorov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В этом куске кода лишнее есть или нет?
   
assume cs:code, ds:data  
mov ax, data  
mov ds, ax

Всего записей: 14 | Зарегистр. 07-04-2012 | Отправлено: 22:26 09-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть. гавару тебе возьми скачай эмулятор, наглядно увидишь как все работает сразу веселее ассемблер пойдет

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:37 09-10-2012
blaro



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maksim_Avrorov

Цитата:
В этом куске кода лишнее есть или нет?
   
assume cs:code, ds:data  
mov ax, data  
mov ds, ax

Нет. Все на своих местах.
Это, кстати, надо всегда писать.

----------
Оптимистично смотрю на мир глазами убийцы.

Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 22:38 09-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
извиняюсь. я просто екзешники никогда не писал надо так. тут как раз в эмуляторе болванка екзешника
 
http://s1.ipicture.ru/uploads/20121009/okNT4qcJ.gif

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:48 09-10-2012 | Исправлено: bomzzz, 14:25 10-10-2012
Maksim_Avrorov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за столь наглядное пояснение. Эмулятор скачал. Теперь ищу функцию для вывода числа, а не символа из регистра.....  

Всего записей: 14 | Зарегистр. 07-04-2012 | Отправлено: 23:29 09-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
там в эммуляторе куча примеров. вот их разбирай

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:32 09-10-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maksim_Avrorov

Цитата:
Теперь ищу функцию для вывода числа, а не символа из регистра.....
вообще-то с точностью наоборот: число выводится посимвольно, если в регистре сидит 25 (десятеричное), то вывести надо два символа '2' и '5'

Всего записей: 24115 | Зарегистр. 06-12-2002 | Отправлено: 09:37 10-10-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ищу функцию для вывода числа

встроенной ни в ДОС, ни в БИОС нет (хорошо хоть вывод букв и строк есть ), пиши сам, или поищи чужую, благо вариантов выше крыши...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 15:20 10-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в эммуляторе есть примеры вывода и двоичного и десятичного и шестнадцатеричного числа

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:27 10-10-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! В институте начался курс микропроцессорных систем, и мы начали изучать Ассемблер. И первым заданием было сложить массив чисел в ячейках с 39-ой по 40-ую(шестнадцатеричная) с сохранением результата в двух байтах. Проделать это со знаковыми и без знаковыми числами. Вот программа, которую я написала для без знаковых. А вот со знаковыми туплю что то. Подскажите пожалуйста.
 
mov R0,#039h
mov R1,0h
Summa:
   mov A,@R0
   add A,R1
   mov R1,A
   jnc summ2
   inc R2
   jmp summ2
Summ2:
   inc R0
   cjne R0,#041h,summ
   jmp _end

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 16:02 17-10-2012
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вычитание и сложение знаковых чисел осуществляется точно также как безнаковых, только при выводе результата надо учесть знак
 
Добавлено:
http://asmworld.ru/uchebnyj-kurs/008-chisla-so-znakom-i-bez/
вот тута вроде просто написано

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:35 17-10-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru