Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
KyouFujibayashi
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 12
1

Использование макрокоманд в программе

14.06.2015, 12:10. Просмотров 481. Ответов 5
Метки нет (Все метки)

Здравствуйте.
Мне нужно "обернуть" процедуру outarr8 в макрокоманду, но я не понимаю как это сделать.
Assembler
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
MODEL Small,pascal
include io.asm
S       segment stack 'stack'
        DB 256 DUP(?)
S       ends
 
D       segment
A   db  8,5,8,7,1,4
B   db  1,-1,6 DUP(4),9,4,7
numbera    dw  6
numberb    dw  11
x   dw  ?
y   dw  ?
D       ends
 
C       segment
        assume CS:C, DS:D, SS:S
 
outarr8 proc far data1:word,data2:word
LOCAL   xloc:WORD,smesh:WORD,num:WORD
    MOV AX,data1
    mov smesh,ax
    MOV ax,data2
    mov num,AX
    push dx
    push cx
    push bx
    push ax
    mov si,0
    mov bx,smesh
prv1:
    cmp si,num
    jge nxt1
    mov al,BYTE ptr [si+bx]
    mov xloc,ax
    outint xloc
    newline
    inc si
    jmp prv1
nxt1:  pop ax
    pop bx
    pop cx
    pop dx
    ret
    endp
 
start:  mov ax,D
        mov DS,ax
    
    mov si,numbera
    mov al,A[si-1]
    mov ah,0
    mov x,ax
    
    mov ax,0
    mov si,1
prv2:
    add al,B[si-1]
    cmp si,numberb
    jge nxt2
    inc si
    jmp prv2
nxt2:  mov dx,0
    idiv numberb
    cmp x,ax
    je nxt3
vzvb: LEA dx,b;mov ax,offset B
    MOV CX,numberb;mov bx,numberb
    call outarr8
    finish
nxt3:  cmp dx,0
    je vzva
    jmp vzvb
vzva:
    LEA DX,A;    mov ax,offset A
    mov Cx,numbera;    mov bx,numbera
    call outarr8,DX,CX
    finish
 
C   ends
    end start
Я прочитал в интернете что объявление и использование макрокоманды выглядит как-то так
Assembler
1
2
3
MACRO macro_name optional-parameter-list 
      statements 
ENDM  macro_name
Assembler
1
macro_name argument-list
но я не понимаю как это использовать в реальной жизни (в программе выше, например).
В архиве лежит файл с кодом программы + IO.asm и IOPROC.asm.
0
Вложения
Тип файла: zip outarr8.zip (5.0 Кб, 1 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2015, 12:10
Ответы с готовыми решениями:

Реализация поля со списком посредством макрокоманд
Добрый день! Подскажите пожалуйста, есть три таблицы: запчасти, объекты, и связи. Таблица связи...

Задачи на использование событий. Осуществить использование событий в программе с применением синтаксиса обработчика, рекомендованного для среды NET Fr
NET Framework. Программа для поиска простых чисел среди чисел Фибоначчи. При нахождении...

Использование заголовков из С++ в программе C#
Здравствуйте! Есть поворотный стол, общающийся с компом по интерфейсу CAN. Есть пара примеров...

Использование функций в программе
Подскажите пожалуйста как написать программу Написать функцию вычисления площади треугольника по...

Использование прототипов в программе
Помогите пожалуйста. Нужно чтобы перед main() использовался прототип void. Подскажите как...

5
Mikl___
Автор FAQ
13896 / 6531 / 658
Регистрация: 11.11.2010
Сообщений: 11,762
14.06.2015, 13:15 2
KyouFujibayashi,
прочитай http://www.cyberforum.ru/assembler-articles/thread1005284.html http://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow "Глава 21. Макроязык"
0
KyouFujibayashi
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 12
15.06.2015, 21:34  [ТС] 3
Цитата Сообщение от Mikl___ Посмотреть сообщение
KyouFujibayashi,
прочитай Электронный учебник "Глава 21. Макроязык"
Прочитал. Не понимаю как это использовать в конкретном случае.
0
Mikl___
Автор FAQ
13896 / 6531 / 658
Регистрация: 11.11.2010
Сообщений: 11,762
16.06.2015, 02:30 4
KyouFujibayashi,
прочитай еще раз, перечитай свои лекции, возьми ещё один учебник... Хотя, кого я обманываю? Фраза "я не понимаю как это использовать в реальной жизни" однозначно трактуется "Напишите за меня..."
0
Constantin Cat
5763 / 1254 / 402
Регистрация: 28.02.2015
Сообщений: 2,732
Завершенные тесты: 1
16.06.2015, 11:10 5
Цитата Сообщение от KyouFujibayashi Посмотреть сообщение
но я не понимаю как это использовать в реальной жизни
Так-же как написан: outnum macro num,leng,sign.
0
KyouFujibayashi
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 12
25.06.2015, 18:07  [ТС] 6
Я написал что-то похожее на решение, но преподу не понравилась команда else в макрокоманде. Что с ней не так и на что ее нужно заменить?
Assembler
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
MODEL Small,pascal
include io.asm
 
output_arr  macro   arr,num
    local flag
    same <bx,Bx,bX,BX>,num,flag
    if flag
    mov bx,num
    else
    same <ax,Ax,aX,AX>,arr,flag
    lea ax,arr 
    endif
    call outarr8
    endm
 
S       segment stack 'stack'
        DB 256 DUP(?)
S       ends
 
D       segment
A   db  8,5,8,7,1,4
B   db  1,-1,6 DUP(4),9,4,7
numbera    dw  6
numberb    dw  11
x   dw  ?
y   dw  ?
D       ends
 
C       segment
        assume CS:C, DS:D, SS:S
 
outarr8 proc far
LOCAL   xloc:WORD,smesh:WORD,num:WORD
    mov smesh,ax
    mov num,bx
    push dx
    push cx
    push bx
    push ax
    mov si,0
    mov bx,smesh
prv1:
    cmp si,num
    jge nxt1
    mov al,BYTE ptr [si+bx]
    mov ah,0
    mov xloc,ax
    outint xloc
    newline
    inc si
    jmp prv1
nxt1:  pop ax
    pop bx
    pop cx
    pop dx
    ret
    endp
 
start:  mov ax,D
        mov DS,ax
    
    mov si,numbera
    mov al,A[si-1]
    mov ah,0
    mov x,ax
    
    mov ax,0
    mov si,1
prv2:
    add al,B[si-1]
    cmp si,numberb
    jge nxt2
    inc si
    jmp prv2
nxt2:  mov dx,0
    idiv numberb
    cmp x,ax
    je nxt3
vzvb:  mov bx,numberb
    lea ax,B
    output_arr  B,bx
    finish
nxt3:  cmp dx,0
    je vzva
    jmp vzvb
vzva:
    mov bx,numbera
    lea ax,A
    output_arr  A,bx
    finish
 
C   ends
    end start
0
25.06.2015, 18:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2015, 18:07

Использование функции в программе
Написал прогу, все хорошо, все работает. Но преподаватель сказал что нужно сделать через...

Использование CSS в программе
Здравствуйте, я хочу узнать, как можно сделать кнопки в C# Microsoft Visual Studio 2015 RC...

Использование в программе оператора If
1) Составить программу по следующему сценарию: Умеете ли вы контролировать себя? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru