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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что такое автосумма?
Что такое а, b?

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 17:29 01-11-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А и В-это два массива чисел. Количество элементов хранится в регистре. Длина массивов одинакова. По заданию количество элементов 11.  
Автосумма-это суммирование элементов:
то есть по моему заданию: (((a1+b1)/(a1-b1))*b1)+ (((a2+b2)/(a2-b2))*b2)+.....+((a11+b11)/(a11-b11))*b11-найти вот такую сумму
Здесь 1,2....11-это индексы элеметов массивов их всего 11

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 17:40 01-11-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Каких чисел (int, unsigned int, char, unsigned char)?
Какую сумму (int, unsigned int, char, unsigned char)?

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 18:12 01-11-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Числа беззнаковые целые, значит и результат суммы - беззнаковое целое

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 18:35 01-11-2012
ne_viens

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

Код:
 
ORG 0
;------------------------init
    mov 30h, #67h    ;unsigned char a[10]
    mov 31h, #91h
    mov 32h, #40h
    mov 33h, #0a5h
    mov 34h, #3ch
    mov 35h, #98h
    mov 36h, #0f7h
    mov 37h, #41h
    mov 38h, #18h
    mov 39h, #0e0h
    mov 40h, #99h    ;unsigned char b[10]
    mov 41h, #21h
    mov 42h, #0ffh
    mov 43h, #17h
    mov 44h, #45h
    mov 45h, #4eh
    mov 46h, #32h
    mov 47h, #7bh
    mov 48h, #0d9h
    mov 49h, #0dah    
 
    mov R0, #30h    ;&a
    mov R1, #40h    ;&b
    mov R2, #0        ;loResult
    mov R3, #0        ;hiResult
L1:
;------------------------unsigned int Result += ((a[j]+b[j])/(a[j]-b[j]))*b[j]
    mov A, @R0
    clr C
    subb A, @R1
    jz err
 
    mov B, A
    mov A, @R0
    add A, @R1
    div AB
    mov B, A
    mov A, @R1
    mul AB
 
    add A, R2
    mov R2, A
    mov A, B
    addc A, R3
    mov R3, A
    
    inc R0
    inc R1
    cjne R0, #3ah, L1
    nop
    
err:
    nop                ;division by zero
 

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 12:00 02-11-2012 | Исправлено: ne_viens, 12:09 02-11-2012
gosnami

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

Цитата:
 @R1

объясните, пожалуйста, дураку... это значение по ссылке передается?

Всего записей: 101 | Зарегистр. 02-11-2012 | Отправлено: 23:13 02-11-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет, посылки не передаются.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 00:43 03-11-2012
gosnami

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
посылки
А в чем тогда отличие
Цитата:
mov A, @R0
от
Цитата:
mov A, R0
?
В первом случае в A помещается адрес памяти и при изменении А будет меняться значение R0? а во втором случае в А помещается значение R0 и они живут независимо друг от друга?

Всего записей: 101 | Зарегистр. 02-11-2012 | Отправлено: 01:01 03-11-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все просто замечательно. Спасибо огромное. Но у меня 1 вопрос по реализации:
1. Если получится что аккумулятор равен 0, то переход на метку Err. А что в этой метке происходит? просто задержка или что?
 
 
Добавлено:
И заодно можете порекомендовать какие нибудь программки типа Ceibo? для эмуляции 8051? На Windows 7 Ceibo не пошло

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 13:19 03-11-2012
gosnami

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mov A, @R0 то же самое что lea A, R0 ?

Всего записей: 101 | Зарегистр. 02-11-2012 | Отправлено: 14:36 03-11-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неа, mov al, [esi] на интел асме или A = *R0; на C.
 
 >Nastya19kiss Вместо nop'a пишется обработчик ошибки, в условиях задачи этого не было.
 
edsim51di - симулятор для 8051

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 15:03 03-11-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и почему цикл идет до 3аh?

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 15:15 03-11-2012
ne_viens

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

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 15:30 03-11-2012
gosnami

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
так а в чем отличие mov al, [esi] от lea eax, esi?
это же вроде одно и то же...

Всего записей: 101 | Зарегистр. 02-11-2012 | Отправлено: 16:26 03-11-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mov al, [esi] загружает в al байт из памяти, на которую указывает esi
lea eax, [esi] загружает в eax esi.
 

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 18:12 03-11-2012
gosnami

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
спасибо, понял. еще раз сори за глупые вопросы но теперь для себя хоть разницу уяснил

Всего записей: 101 | Зарегистр. 02-11-2012 | Отправлено: 23:20 03-11-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
 
\Добрый вечер. У меня еще в задании надо составить программу деления двух чисел а и в. Допустим нам одно известно (число а) и нам надо разделить его на другое (число в), которое заранее неизвестно. Сегодня препод объяснял что это делается путем сравнения бит этих двух чисел  двух чисел и сдвигом (аналогично делению обыкновенных десятичных чисел столбиком). Помоги пожалуйста

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 19:02 08-11-2012
ne_viens

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

Код:
 
;The 8051/8052 Microcontroller: Architecture, Assembly Language, And Hardware Interfacing
;By Craig Steiner
;R3, R2 - divident
;R5, R4 - divisor
 
    mov R2, #0FFh
    mov R3, #0FFh
    mov R4, #81h
    mov R5, #0
 
divide:
    clr A
    mov B, A        ; initialize count
    mov R0, A        ; zero quotient
    mov R1, A
    sjmp L3
;---------------------------------------------------------
L1:
    mov A, R3
    clr C
    subb A, R5        ; is divisor greater than dividend yet
    jc L4            ; yes, go no further
    jnz L2
 
    mov A, R2
    subb A, R4
    jc L4
 
L2:
    mov A, R4        ; shift divisor up one bit
    clr C
    rlc A
    mov R4, A
    mov A, R5
    rlc A
    mov R5, A
L3:
    inc B            ; increment count
    mov A, R5        ; check for safe to shift some more
    jnb ACC.7, L1    ; loop if top bit clear
;-------------------------------------------------------
L4:
    mov A, R3
    clr C
    subb A, R5        ; is divisor greater than dividend
    jc L5
    jnz L6
    mov A, R2
    subb A, R4
    jnc L6
 
L5:
    clr C
    sjmp L7
L6:
    clr C            ; subtract divisor from dividend
    mov A, R2
    subb A, R4
    mov R2, A
    mov A, R3
    subb A, R5
    mov R3, A
    setb C        ; now set bit for quotient
L7:
    mov A, R0
    rlc A
    mov R0, A
    mov A, R1
    rlc A
    mov R1, A
 
    mov A, R5        ; shift divisor down
    clr C
    rrc A
    mov R5, A
    mov A, R4
    rrc A
    mov R4, A
    djnz B, L4        ; and continue with the rest
;---------------------------------------------------------
;    mov 5, R3
;    mov 4, R2
;    mov 3, R1
;    mov 2, R0
    ret
 

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 20:17 08-11-2012
Nastya19kiss

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А короче эту программу никак нельзя сделать?

Всего записей: 63 | Зарегистр. 22-04-2012 | Отправлено: 20:48 08-11-2012
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eсли надо поделить unsigned int на unsigned int, то нет.
Если unsigned char на unsigned char, тогда:

Код:
div AB

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 21:30 08-11-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