Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Алексей96
0 / 0 / 0
Регистрация: 19.04.2014
Сообщений: 30
1

Объединение двух программ в одну

26.11.2015, 16:32. Просмотров 310. Ответов 0
Метки нет (Все метки)

Первая программа
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
;---------------------------------------------------------------------------------------
DATASG    SEGMENT   PARA                                        ; открыть сегмент данных
    MYTEXT   DB 's(dfs(df' ,13,10, '$'          ; переменная с текстом
    DATASG  ENDS                                                        ; закрыть сегмент данных
    STACKSG     SEGMENT      'Stack'                ; открыть сегмент стека
        DB  12 DUP(?)                                               ; задать стек 12 байт
    STACKSG   ENDS                                                              ; закрыть сегмент стека
    CODESG  SEGMENT PARA 'Code'                         ; открыть сегмент кода
    BEGIN   PROC FAR                                                            ; Процедура FAR с названием BEGIN
    ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG            ; Задать соответствия для сегментов
        PUSH    DS                                                              ; поместить в стек данные DS
        SUB     AX,AX                                                       ; AX - AX
        PUSH    AX                                                              ; поместить в стек данные AX
        MOV     AX, DATASG                                          ; Инициализировать сегментный
        MOV     DS, AX                                                      ; регистр DS
        LEA     BX, MYTEXT                                          ; Поместить в BX offset переменной
        MOV     CX, 10H                                                     ; CX = 10h
    MT1:    MOV     AH, [BX]                                                    ; Метка MT1, AH = содержимое по адресу BX
        CMP     AH, 28H                                                     ; сравнить (AH) и 61h
        JB  MT2                                                         ;                                                           ; 
        CALL    COR                                                         ; Вызвать процедуру COR
    MT2:    INC     BX                                                          ; BX := BX + 1
        LOOP MT1                                                            ; CX := CX - 1, если CX > 0, идти к MT1
        LEA     DX, MYTEXT                                          ; в DX поместить адрес MYTEXT
        MOV     AH, 09H                                                 ; вывести на экран MYTEXT
        INT     21H                                                         ; с помощью DOS
        RET                                                                         ; Завершить программу, и вернуться в DOS
    BEGIN   ENDP                                                                    ; Окончание процедуры BEGIN
COR PROC     NEAR
        NOP
        ADD AH, 01H
        MOV     [BX], AH
        RET
    COR ENDP
 
                                                                    ; Окончание процедуры COR
    CODESG  ENDS                                                        ; Окончание сегмента кода
    END BEGIN                                           ; Выход из метки BEGIN
Вторая программа
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
DATASG    SEGMENT   PARA                                        ; открыть сегмент данных
    MYTEXT   DB 'WqWdfdfWQ!' ,13,10, '$'            ; переменная с текстом
    DATASG  ENDS                                                        ; закрыть сегмент данных
    STACKSG     SEGMENT      'Stack'                ; открыть сегмент стека
        DB  12 DUP(?)                                               ; задать стек 12 байт
    STACKSG   ENDS                                                              ; закрыть сегмент стека
    CODESG  SEGMENT PARA 'Code'                         ; открыть сегмент кода
    BEGIN   PROC FAR                                                            ; Процедура FAR с названием BEGIN
    ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG            ; Задать соответствия для сегментов
        PUSH    DS                                                              ; поместить в стек данные DS
        SUB     AX,AX                                                       ; AX - AX
        PUSH    AX                                                              ; поместить в стек данные AX
        MOV     AX, DATASG                                          ; Инициализировать сегментный
        MOV     DS, AX                                                      ; регистр DS
        LEA     BX, MYTEXT                                          ; Поместить в BX offset переменной
        MOV     CX, 10H                                                     ; CX = 10h
    MT1:    MOV     AH, [BX]                                                    ; Метка MT1, AH = содержимое по адресу BX
        CMP     AH, 41H                                                     ; сравнить (AH) и 41h
        JB  MT2                                                         ; если (AH) < 41h то перейти к MT2
        CMP     AH, 5AH                                                 ; сравнить (AH) и 5Ah
        JA  MT2                                                         ; если (AH) > 5Ah то перейти к MT2
        CALL    COR                                                         ; Вызвать процедуру COR
    MT2:    INC     BX                                                          ; BX := BX + 1
        LOOP MT1                                                            ; CX := CX - 1, если CX > 0, идти к MT1
        LEA     DX, MYTEXT                                          ; в DX поместить адрес MYTEXT
        MOV     AH, 09H                                                 ; вывести на экран MYTEXT
        INT     21H                                                         ; с помощью DOS
        RET                                                                         ; Завершить программу, и вернуться в DOS
    BEGIN   ENDP                                                                    ; Окончание процедуры BEGIN
 
    COR PROC     NEAR                                                       ; Процедура NEAR с названием COR
        NOP                                                                     ; Нет операции
        ADD     AH, 20H                                                 ; Прибавить 20h чтоб получить строчную букву
        MOV     [BX], AH                                                    ; Поместить AH, в содержимое по адресу из BX
        RET                                                                         ; Вернуться
    COR ENDP                                                                    ; Окончание процедуры COR
    CODESG  ENDS                                                        ; Окончание сегмента кода
    END BEGIN                                           ; Выход из метки BEGIN
Добавлено через 6 минут
Помогите пожалуйста объединить две программки в одну
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 16:32
Ответы с готовыми решениями:

Объединение двух строк
Заданы 2 строки, в которых символы упорядочены в порядке возрастания кодов. Объединить их в одну...

Объединение двух символьных строк
Написать программу объединения двух символьных строк с использованием команды MOVSB. Необходимо...

Как сделать объединение двух массивов в третий
Привет! Нужно написать объединение двух массивов в один {1,2,3} U {2,3,4} = {1,2,3,4} вот так ...

Объединение двух программ в одну
Есть у меня две программы. Одна заправшивает грани интервала, колво точек на нем и строит таблицу...

Объединение двух программ в одну
Народ, да помогите же )))))

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2015, 16:32

Объединение программ в одну
Всем привет. Как можно объединить следующие программы в одну? Использовать Case структуру?

Объединение несколько программ в одну?
Подскажите пожалуйста, у меня два проекта делфи, как можно их объединить в одну программу? Второй...

Объединение нескольких программ в одну
У меня есть 8 программ как их объеденить в одну и чтоб каждая программа запускалась с графического...


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

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

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