Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: gosnami
Дата сообщения: 03.11.2012 00:01
ne_viens
посылки
А в чем тогда отличие
Цитата:
mov A, @R0
от
Цитата:
mov A, R0
?
В первом случае в A помещается адрес памяти и при изменении А будет меняться значение R0? а во втором случае в А помещается значение R0 и они живут независимо друг от друга?
Автор: Nastya19kiss
Дата сообщения: 03.11.2012 12:19
Все просто замечательно. Спасибо огромное. Но у меня 1 вопрос по реализации:
1. Если получится что аккумулятор равен 0, то переход на метку Err. А что в этой метке происходит? просто задержка или что?


Добавлено:
И заодно можете порекомендовать какие нибудь программки типа Ceibo? для эмуляции 8051? На Windows 7 Ceibo не пошло
Автор: gosnami
Дата сообщения: 03.11.2012 13:36
mov A, @R0 то же самое что lea A, R0 ?
Автор: ne_viens
Дата сообщения: 03.11.2012 14:03
Неа, mov al, [esi] на интел асме или A = *R0; на C.

>Nastya19kiss Вместо nop'a пишется обработчик ошибки, в условиях задачи этого не было.

edsim51di - симулятор для 8051
Автор: Nastya19kiss
Дата сообщения: 03.11.2012 14:15
и почему цикл идет до 3аh?
Автор: ne_viens
Дата сообщения: 03.11.2012 14:30
Потому что по адресу 39h находится последний элемент массива.
Автор: gosnami
Дата сообщения: 03.11.2012 15:26
ne_viens
так а в чем отличие mov al, [esi] от lea eax, esi?
это же вроде одно и то же...
Автор: ne_viens
Дата сообщения: 03.11.2012 17:12
mov al, [esi] загружает в al байт из памяти, на которую указывает esi
lea eax, [esi] загружает в eax esi.
Автор: gosnami
Дата сообщения: 03.11.2012 22:20
ne_viens
спасибо, понял. еще раз сори за глупые вопросы но теперь для себя хоть разницу уяснил
Автор: Nastya19kiss
Дата сообщения: 08.11.2012 17:02
ne_viens

\Добрый вечер. У меня еще в задании надо составить программу деления двух чисел а и в. Допустим нам одно известно (число а) и нам надо разделить его на другое (число в), которое заранее неизвестно. Сегодня препод объяснял что это делается путем сравнения бит этих двух чисел двух чисел и сдвигом (аналогично делению обыкновенных десятичных чисел столбиком). Помоги пожалуйста
Автор: ne_viens
Дата сообщения: 08.11.2012 18:17

Код:
;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
Автор: Nastya19kiss
Дата сообщения: 08.11.2012 18:48
А короче эту программу никак нельзя сделать?
Автор: ne_viens
Дата сообщения: 08.11.2012 19:30
Eсли надо поделить unsigned int на unsigned int, то нет.
Если unsigned char на unsigned char, тогда:

Код: div AB
Автор: Nastya19kiss
Дата сообщения: 10.11.2012 09:42
Можно в кратце объяснить данную программу?
Автор: ne_viens
Дата сообщения: 10.11.2012 10:58
http://www.8052.com/div16
Автор: Nastya19kiss
Дата сообщения: 14.11.2012 12:21
А это метод с восстановлением остатка или без восстановления?

Добавлено:
И можно поподробней объяснить зачем делается сдвиг влево и сдвиг вправо делителя?
Автор: renilen
Дата сообщения: 14.11.2012 13:13

Цитата:
А это метод с восстановлением остатка или без восстановления?
И можно поподробней объяснить зачем делается сдвиг влево и сдвиг вправо делителя?

не легче сесть и разобраться а не задавать вопросы о всем вподряд?
Автор: Nastya19kiss
Дата сообщения: 14.11.2012 13:24
Не поверишь!!! Именно сейчас Сижу и разбираюсь. Но не у всех сразу получается. Если есть люди которые могут помочь в этом почему бы не задать сопутствующие вопросы.

Добавлено:
Вот сейчас я разобралась наконец так со сдвигами. Но первый вопрос в силе
Автор: bomzzz
Дата сообщения: 14.11.2012 13:52
например для быстрого деления и умножения на степени двойки или логических операций.
Автор: Nastya19kiss
Дата сообщения: 14.11.2012 14:19
Дак это понятно что для деления на степени двойки все просто делается сдвигами. Вы задание мое читали? Там написано что производится деление двух различных чисел!

Добавлено:
ne_viens
Сори. Можно на выше заданные вопросы не отвечать я во всем только что разобралась. спасибо тебе большое за помощь
Автор: renilen
Дата сообщения: 14.11.2012 16:21
Nastya19kiss
Вы как диплом получите сфоткайте его хоть и на ру-боард выложите. Люди должны видеть результаты своих усилий
Автор: Nastya19kiss
Дата сообщения: 15.11.2012 16:34
Да тут только один человек достоин увидеть результаты своих усилий. Ему огромное спасибо
Автор: renilen
Дата сообщения: 16.11.2012 11:54

Цитата:
Да тут только один человек достоин увидеть результаты своих усилий. Ему огромное спасибо

Ну а бат-файлы ж не этот человек писал
Так что и ему диплом тоже покажите
Автор: Nastya19kiss
Дата сообщения: 16.11.2012 14:07
Кому надо тому и покажу. Чтож вы так переживаете за мой диплом?

Добавлено:
По моему это в полне нормально - просить помощи на форуме. Для чего он тогда был создан? У меня есть проблемы в данной области я прошу помощи у людей чтобы разобраться. Вы что думаете человек мне пишет программу и я ее тупо сдаю чтоли? Дак вот чтобы Вы знали, такового не происходит, я сижу и разбираюсь и в дальнейшем пытаюсь сама применить то в чем я разобралась на практике. Так что ваши каверзные высказывания здесь ни к чему
Автор: renilen
Дата сообщения: 16.11.2012 14:30
[more]
Цитата:
По моему это в полне нормально - просить помощи на форуме. Для чего он тогда был создан? У меня есть проблемы в данной области я прошу помощи у людей чтобы разобраться. Вы что думаете человек мне пишет программу и я ее тупо сдаю чтоли? Дак вот чтобы Вы знали, такового не происходит, я сижу и разбираюсь и в дальнейшем пытаюсь сама применить то в чем я разобралась на практике. Так что ваши каверзные высказывания здесь ни к чему

Разбираетесь? И после задаете такой вопрос -

Цитата:
А короче эту программу никак нельзя сделать?

???? Сделать программу короче... программа это не стишок!

Цитата:
Можно в кратце объяснить данную программу?

У вас же есть задание... в нем сказано что она делает... пошаговое выполнение программы... смотрите куда что пишется, что на что делится и понимаете суть программы... к решению задачи вы усилий вообще никаких не приложили.

Цитата:
Вы что думаете человек мне пишет программу и я ее тупо сдаю чтоли?

Да, именно так я и думаю. Вы ее учите как стишок. Попытка решить - это программа, написанная вами, которая хотя бы частично работает и что-то делает, а форумчане помогают вам ее довести до ума. В таком случае - это ваша работа. В нынешнем случае - программа не Ваша. [/more]
Автор: bomzzz
Дата сообщения: 16.11.2012 18:12
любая программа может быть сокращена даже
10 end

нет гендерной нетерпимости
Автор: Nastya19kiss
Дата сообщения: 17.11.2012 12:57
bomzzz
Согласна с Вами. Извините. Исправлюсь
Автор: Nastya19kiss
Дата сообщения: 20.11.2012 15:48
ne_viens
Загляни в личку пожалуйста
Автор: Nastya19kiss
Дата сообщения: 27.11.2012 15:06
ne_viens
Привет. у меня результат программы нахождения суммы неправильный...получается такая ситуация когда ai-bi<0 а значит частное будет тоже <0 и результат умножения отрицательной дроби на положительное число тоже будет отрицательным и получится что член суммы будет отрицательным
Автор: dimapo
Дата сообщения: 28.11.2012 19:32
[more] [more] Тема – тест ОЗУ микропроцессорной системы (на х88). Курсовой. Алгоритм теста – попарное считывание по диагонали. Алгоритм приведен ниже.( я вас кажись обманул)
По алгоритму: ASR –адрес контролируемая ячейка памяти, AIJ – остальные ячейки памяти. S, I номера строки, R, J номера столбцов. L и M конечные номера ячеек строки и столбца соответственно.
В контролируемую ячейку ASR записывается 0, в остальные ячейки 1. Затем происходит считывание ячеек и контролируется правильность записи.
Микросхема ROM известна ( КР556РТ16. 64К(8Кх8))

Теперь вопрос:
1.    Каким образом обращаться к ячейке памяти? Как матрица? или используя базово -индексную адресацию.? Как это прописать, учитывая что нужно смещаться и по строкам и по столбцам.

Где-то видел
;------ввод массива-----
mov si,0 ;j
mov bx,0 ;i
mov cx,10

forI:
push cx
mov cx,10
mov si,0

forJ:
mov ah,1h
int 21h

mov array[bx][si],al

mov ah,2h
mov dl,' '
int 21h

inc si
loop forJ

Может так mov array[bx][si],al ????
http://imageshack.us/photo/my-images/825/str101.jpg/ [/more]

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.