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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2018, 23:05   #1
True Wade
 
Регистрация: 13.05.2017
Сообщений: 4
По умолчанию Реализация через макрос - A and B -> число.

Здравствуйте. Помогите пожалуйста с программой.

Задание: Реализация через макрос - A and B -> число.
Т.е. нужно логически умножить два числ и получить результат. И сделать это с помощью макросов.

Препод сказал, что нужно передать "and" как аргумент.
True Wade вне форума Ответить с цитированием
Старый 25.05.2018, 23:28   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

True Wade у гугла спрашивал, как написать макрос?
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 25.05.2018, 23:37   #3
True Wade
 
Регистрация: 13.05.2017
Сообщений: 4
По умолчанию

Да, и гугол вроде тоже в этом не шарит
True Wade вне форума Ответить с цитированием
Старый 25.05.2018, 23:38   #4
True Wade
 
Регистрация: 13.05.2017
Сообщений: 4
По умолчанию

Вот код:
begin segment
Logic macro Action, A, B
mov dx, offset A
mov ah, 9
mov ax, A
Action ax, B
int 21h
endm

assume cs: begin
start:
Logic and, 7, 12
mov ax, 4c00h
int 21h
begin ends

end Start

Если можете, подскажите чтоб он работал ? Пожалуйста

Последний раз редактировалось True Wade; 26.05.2018 в 00:02.
True Wade вне форума Ответить с цитированием
Старый 27.05.2018, 20:01   #5
True Wade
 
Регистрация: 13.05.2017
Сообщений: 4
По умолчанию

Вот дополненный код. Но он всё равно далёк от идеала. Помогите чтоб выводило на экран.
Logic macro Action, Op1, Op2
mov ax, Op1
Action ax, Op2
endm

_stack segment stack
db 1024 dup(?)
_stack ends

data segment
A dw 7
B dw 12
C dw ?
asAnd db ' and ', '$'
asEqu db ' = ', '$'
data ends

code segment
assume CS:code, DSata
main:
mov ax, data
mov ds, ax

mov ax, [A]
call ShowBin
mov ah, 09h
lea dx, [asAnd]
int 21h
mov ax, [B]
call ShowBin
mov ah, 09h
lea dx, [asEqu]
int 21h

Logic and, [A], [B]
mov [C], ax

call ShowBin

mov ax, 4c00h
int 21h

;выводит на экран в двоичной системе счисления содержимое регистра AX
; входные данные:
; ax - число для отображения
ShowBin proc
push ax
push bx
push cx

mov bx, ax ; из-за распределения регистров
; при выводе на экран с помощью int 29h,
; выводимое число будет находится в bx
mov cx, 16 ; переменная цикла равна количеству бит в слове

@@For:

mov ax, '0' ; в регистрах al=код символа '0', ah=00h

shl bx, 1 ; выделение бита

adc al, ah ; сложение кода символа '0' со значением выделенного бита

int 29h

loop @@For

pop cx
pop bx
pop ax
ret
ShowBin endp

code ends

end main
True Wade вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация стека через массив Asya7 Помощь студентам 4 07.09.2015 23:13
реализация стека через массив el_gato_de_Ch Общие вопросы C/C++ 4 21.05.2013 22:40
Реализация через функцию c++\noob Общие вопросы C/C++ 0 08.03.2011 12:29
реализация через mvc Adblock PHP 6 24.11.2010 15:33
Exel - при открытии файла через макрос, если файл отсутствует - виснет весь макрос gregory1b Microsoft Office Excel 2 14.10.2010 11:51