📚 Другие предметы 📅 30.11.-0001 👁️ 5 просмотров

готовое решения ассемблер

DATASG    SEGMENT   PARA                            ; открыть сегмент данных

MYTEXT   DB 'fghijklmPQRSTUWX!' ,13,10, '$'         ; переменная длиной в 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 = адреc BX

CMP       AH, 66H                           ; сравнить (AH) и 66h

JB           MT2                                 ; если (AH) < 66h то перейти к MT2

CMP       AH, 7AH                          ; сравнить (AH) и 7Ah

JA           MT2                                  ; если (AH) > 7Ah то перейти к MT2

CALL     COR                                 ; Вызвать процедуру COR

MT2:      INC         BX                                    ; BX := BX + 1

LOOP MT1                                    ; CX := CX - 1, если CX > 0, идти к MT1

LEA        DX, MYTEXT                ; в DX поместить offset MYTEXT

MOV      AH, 09H                          ; вывести на экран MYTEXT

INT         21H                                  ; с помощью DOS

RET                                               ; Завершить программу, и вернуться в DOS

BEGIN   ENDP                                           ; Окончание процедуры BEGIN

COR       PROC     NEAR                            ; Процедура NEAR с названием COR

NOP                                              ; нет операции

AND      AH, 0DFH                      ; Сместить старший разряд на D, младш. на F

MOV      [BX], AH                        ; Поместить AH, в содержимое BX

RET                                              ; Вернуться

COR       ENDP                                            ; Окончание процедуры COR

CODESG               ENDS                             ; Окончание сегмента кода

END       BEGIN                                          ; Выход из метки BEGIN

ГОТОВОЕ РЕШЕНИЕ Скачать файл решения: decision_4946.rar

Готовый файл с подробным решением задачи доступен для бесплатного скачивания

📥 Скачать бесплатно

Нужно решить похожую задачу или курсовую?

Опубликуйте условие — умные ИИ-помощники и проверенные студенты дадут решение за пару минут!

Задать свой вопрос ✍️