Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2017, 23:17   #1
prov6514
Пользователь
 
Регистрация: 07.02.2017
Сообщений: 22
По умолчанию помогите решить задачу в ассемблер

Реализация операции сложения
Даны два числа в двоичном виде. Поменять местами 8,5,3,2- разряды первого числа с 0,1,6,7 разрядами второго числа соответственно. Результаты умножить и сложить на 4

model tiny
.code
org 100h
.386
start:

;b;
xor ax,ax
mov al,[a]
btr ax,8
btr ax,5
btr ax,3
btr ax,2
xor bx,bx
mov bl,[b]
or bx,ax
mov cx,bx

;a;
xor ax,ax
mov al,[b]
btr ax,0
btr ax,1
btr ax,6
btr ax,7
xor bx,bx
mov bl,[a]
or bx,ax

;log and
or cx,bx

;*4
shl cx,3

;otvet cx

ret

a db 11111111b
b db 10101010b

end start

вот код программы, не уверена правильный или нет, потому что когда компилирую ошибок нет, а вот когда запускаю то пишет ошибку
prov6514 вне форума Ответить с цитированием
Старый 09.03.2017, 23:19   #2
prov6514
Пользователь
 
Регистрация: 07.02.2017
Сообщений: 22
По умолчанию

TASM.7z вот сам файл программы, для подробного...запускаю через ta.exe, далее компилирую ..и запускаю, но выдает ошибку
prov6514 вне форума Ответить с цитированием
Старый 10.03.2017, 07:41   #3
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

prov6514, мы же вроде бы разбирали эту задачу с вами.

Сама программа выдаст неправильный ответ, т.к. btr ax, 7 - сделает флаг переноса CY равным 7-му биту в ax, а потом обнулит этот бит. Это, вроде бы правильно, но потом нужно запомнить где-то состояние этого бита (или равного ему CY). Но этого в программе - нет. Получается, что программа серией btr обнуляет биты в ax, но изначальное их состояние - забывается и далее нигде не учитывается.

Ошибку вы получаете - оттого, что пытаетесь компилировать com программу в exe и потом запускаете exe. Что приводит к неправильной интерпретации команд.
FPaul вне форума Ответить с цитированием
Старый 10.03.2017, 09:05   #4
prov6514
Пользователь
 
Регистрация: 07.02.2017
Сообщений: 22
По умолчанию

спрашиваю, потому что как сказали у меня должен получиться ответ, а какой ответ понятия не имею.. c_TIuCh1fiY.jpg 27QfXBB0aCs.jpg 7q0raLQ-hwg.jpg..вот так должно получиться, только с другим ответом, сколько не пыталась не получается
prov6514 вне форума Ответить с цитированием
Старый 10.03.2017, 13:00   #5
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Вот код вашей программы, проверенный компиляцией и отладкой в TA.exe. При нажатии Debug вы получите запуск в td вашей программы. В окне Wathes (переход Alt-2) в этом окне наберите ax - сможете наблюдать за изменением ax. Также в ваш код можно вставить процедуру вывода содержимого ax в двоичном или hex виде на экран. Но вопрос - вы сможете защитить преподавателю?
Код:
.model small
.data
a dw 0101010111111111b
b dw 1111000010101010b
.stack 100h
.code
.386
start:
        mov ax, @data
        mov ds, ax

;a
        mov bx, 0       ;маска из разрядов первого числа

        mov ax, [a]

        mov dx, 0       ;помещаем 8 бит первого числа на позицию 0 маски
        btr ax, 8
        rcl dx, 1
        or  bx, dx

        mov dx, 0       ;помещаем 5 бит первого числа на позицию 1 маски
        btr ax, 5
        rcl dx, 1
        shl dx, 1
        or  bx, dx

        mov dx, 0       ;помещаем 3 бит первого числа на позицию 6 маски
        btr ax, 3
        rcl dx, 1
        mov cl, 6
        shl dx, cl
        or  bx, dx

        mov dx, 0       ;помещаем 2 бит первого числа на позицию 7 маски
        btr ax, 2
        rcl dx, 1
        mov cl, 7
        shl dx, cl
        or  bx, dx

        push bx         ;временно сохраняем в стеке значение маски

;b
        mov bx, 0       ;маска из разрядов второго числа

        mov ax, [b]

        mov dx, 0       ;помещаем 0 бит второго числа на позицию 8 маски
        btr ax, 0
        rcl dx, 1
        mov cl, 8
        shl dx, cl
        or  bx, dx

        mov dx, 0       ;помещаем 1 бит второго числа на позицию 5 маски
        btr ax, 1
        rcl dx, 1
        mov cl, 5
        shl dx, cl
        or  bx, dx

        mov dx, 0       ;помещаем 6 бит второго числа на позицию 3 маски
        btr ax, 6
        rcl dx, 1
        mov cl, 3
        shl dx, cl
        or  bx, dx

        mov dx, 0       ;помещаем 7 бит второго числа на позицию 2 маски
        btr ax, 7
        rcl dx, 1
        mov cl, 2
        shl dx, cl
        or  bx, dx

        mov ax, [a]     ;устанавливаем в первом числе разряды
        and ax, 1111111011010011b
        or  ax, bx
        mov [a], ax

        pop bx          ;устанавливаем во втором числе разряды
        mov ax, [b]
        and ax, 1111111100111100b
        or  ax, bx
        mov [b], ax

        add ax, [a]     ;складываем оба числа

        shl ax, 1       ;умножаем сумму на 4
        shl ax, 1

;otvet cx
        mov ax, 4C00h
        int 21h
end start

Последний раз редактировалось FPaul; 10.03.2017 в 13:04.
FPaul вне форума Ответить с цитированием
Старый 10.03.2017, 13:23   #6
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Вот скрины
Изображения
Тип файла: png 1.PNG (16.4 Кб, 142 просмотров)
Тип файла: png 2.PNG (20.2 Кб, 116 просмотров)
Тип файла: png 3.PNG (19.4 Кб, 112 просмотров)
Тип файла: png 4.PNG (19.3 Кб, 110 просмотров)
Тип файла: png 5.PNG (18.3 Кб, 132 просмотров)
Тип файла: png 6.PNG (18.0 Кб, 130 просмотров)
FPaul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблер помогите решить Borembo Помощь студентам 1 30.03.2015 18:13
решить задачу. (ассемблер) alekseevich Помощь студентам 0 23.12.2012 03:06
Помогите решить задачу! Anuta Помощь студентам 2 26.06.2008 05:10