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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2023, 12:56   #1
ChestIotVaga
Пользователь
 
Регистрация: 21.11.2022
Сообщений: 84
По умолчанию Tasm Написать программу для вывода на экран нескольких строк символов.

Код:
   .model compact
; Сегмент стека
s_seg segment
    db 128 dup(?)
s_seg ends
 
; Сегмент данных
d_seg segment
    str_prompt db 'Enter string: $'
    str_result db 13,10,'Chars: $'  
    tab db 256 dup(0) ; массив всех возможных символов  
d_seg ends
 
; Сегмент сода
c_seg segment 'code'
    ; привязываем метки к адресам сегментов 
    assume ds:d_seg, ss:s_seg, cs:c_seg
main:
    ; устанавливаем сегмент стека
    mov ax, s_seg
    mov ss, ax
    ; устанавливаем сегмент данных  
    mov ax, d_seg
    mov ds, ax  
 
    
    ; печатем приглашение
    mov ah, 09h
    lea dx, str_prompt
    int 21h
 
    xor bx, bx  
@1: ; читаем символ
    mov ah, 01h
    int 21h
    ; проверяем конец строки
    cmp al, 13
    je @2
    ; отмечаем в таблице
    mov bl, al
    mov tab[bx], 1
    jmp @1  
 
    ; печатем результат
@2: mov ah, 09h
    lea dx, str_result
    int 21h
    
    mov cx, 256
    xor bx, bx
@3: ; проверяем отметку в таблице
    cmp tab[bx], 1
    jne @4
    ; печатаем символ
    mov ah, 02h
    mov dl, bl
    int 21h
    ; сдвигаемся по таблице 
@4: inc bx
    loop @3 
    
    ; выход из программы    
    mov ax, 4C00h
    int 21h      
c_seg ends
 
end main
код на одну строку скажите как сделать на две может есть код как пример ?
ChestIotVaga вне форума Ответить с цитированием
Старый 22.02.2023, 13:35   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

1) Скопировать часть кода второй раз.
2) Добавить цикл (метку, переменную счетчик, команду инициализиции переменной счетчика, команду проверки счетчика и условную команду перехода на метку)
macomics вне форума Ответить с цитированием
Старый 22.02.2023, 14:11   #3
ChestIotVaga
Пользователь
 
Регистрация: 21.11.2022
Сообщений: 84
По умолчанию

macomics, я в написании кода в ассемблере не сильно знаю могли бы помочь
ChestIotVaga вне форума Ответить с цитированием
Старый 22.02.2023, 14:30   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
   .model compact
; Сегмент стека
s_seg segment
    db 128 dup(?)
s_seg ends
 
; Сегмент данных
d_seg segment
    str_count db 0
    str_prompt db 'Enter string: $'
    str_result db 13,10,'Chars: $'  
    tab db 256 dup(0) ; массив всех возможных символов  
d_seg ends
 
; Сегмент сода
c_seg segment 'code'
    ; привязываем метки к адресам сегментов 
    assume ds:d_seg, ss:s_seg, cs:c_seg
main:
    ; устанавливаем сегмент стека
    mov ax, s_seg
    mov ss, ax
    ; устанавливаем сегмент данных  
    mov ax, d_seg
    mov ds, ax  
 
; начало цикла (повторяется 2 раза от начала и до конца цикла)
    mov str_count, 2
@loop:
    cmp str_count, 0
    jbe @break
    
    ; печатем приглашение
    mov ah, 09h
    lea dx, str_prompt
    int 21h
 
    xor bx, bx  
@1: ; читаем символ
    mov ah, 01h
    int 21h
    ; проверяем конец строки
    cmp al, 13
    je @2
    ; отмечаем в таблице
    mov bl, al
    mov tab[bx], 1
    jmp @1  

; конец цикла
    dec str_count
    jmp @loop
@break:
 
    ; печатем результат
@2: mov ah, 09h
    lea dx, str_result
    int 21h
  
    mov cx, 256
    xor bx, bx
@3: ; проверяем отметку в таблице
    cmp tab[bx], 1
    jne @4
    ; печатаем символ
    mov ah, 02h
    mov dl, bl
    int 21h
    ; сдвигаемся по таблице 
@4: inc bx
    loop @3 

    ; выход из программы    
    mov ax, 4C00h
    int 21h      
c_seg ends
 
end main

Последний раз редактировалось macomics; 22.02.2023 в 14:33.
macomics вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу на C++. Разработать класс «Множество (целых чисел, символов, строк и т. д.)» – Set мощности n. KamaR Общие вопросы по программированию, компьютерный форум 0 18.05.2020 11:49
Составить программу, которая строит таблицу тригонометрических функций, одновременно вывода ее на экран порциями по 5 строк и записывая в текстовый файл trig_tab.dat Ninja997 Паскаль, Turbo Pascal, PascalABC.NET 4 24.11.2017 18:51
написать программу печати строк, которые длиннее 10 символов Kirillgr Помощь студентам 2 23.01.2014 22:11
Написать программу вывода на экран таблицы значений функции... AnriK1991 Общие вопросы C/C++ 0 08.12.2012 14:20
Процедура вывода на экран символов aleksej01-91 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 18.10.2011 18:57