Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
21st
Апр
Выполнение задач на Assembler при нажатии на клавишу
Posted by obzor under assembler
Ввести строку из произвольных ASCII-символов при помощи цикла и 01h и выполнить с ней преобразования
<F2> – изменение порядка следования символов исходной строки на обратный
<F7> — по возрастанию (пузырьком)
Пытался сделать пузыриком и инверсный вывод строки
При инверсном выводе цифры выводит не все, а при сочетании букв и цифр выводит различные символы и знаки.
TASM
ТАСМ’a у меня нет, поэтому код не тестировал, но думаю сам разберёшся:
.386
.model small
.stack 100h
.data
mess0 db 'Type string: $'
mesF2 db 13,10,'<F2> Revers, <F7> Sort, <Esc> Exit'
db 13,10,'Press command KEY...',13,10,'$'
array1 db 80 dup('$')
array2 db 80 dup('$')
len dw 0
.code
start: mov ax,@data
mov ds,ax ; связка ds/es с сегментом данных
mov es,ax
;//==== Ввод строки с клавиатуры --------------
mov ah,9
lea dx,mess0
int 21h
xor cx,cx ; длина строки
lea di,array1
mov ah,1
@01: int 21h
cmp al,13
je next
stosb ; сохранить символ в ES:DI
inc cx ; считаем длину строки
jmp @01
next: mov word[len],cx ; запомним длину..
;//==== Ждём клавишу юзера.. -----------------
mov ah,9
lea dx,mesF2
int 21h
menu: xor ax,ax ; ввод символа без эха
int 16h
cmp al,1Bh ; AL = ascii Esc ?
je exit
cmp ah,3Ch ; AH = расширенная F2?
je @F2
cmp ah,41h ; AH = F7?
je @F7
jmp menu ; остальные в игнор\
;//==== F2 Реверс строки ---------------------
@F2: mov cx,word[len]
lea si,array1
lea di,array2
add si,cx
std
@02: lodsb
mov byte[di],al
inc di
loop @02
cld
mov ah,9
lea dx,array2 ; Вывод результата
int 21h
jmp menu
;//==== F7 Сортировка пузырьком --------------
@F7: lea si,array1
xor bx,bx ; флаг перестановок
mov cx,word[len]
@03: lodsb ; AL = байт из SI
cmp al,byte[si]
jbe @04
xchg al,byte[si]
mov byte[si-1],al
inc bx ; флаг +1
@04: loop @03
or bx,bx ; перестановки были?
jnz @F7
mov ah,9 ; Вывод результата
lea dx,array1
int 21h
;//==== Завершение программы -----------------
xor ax,ax
int 16h
exit: mov ax,4c00h ; end.
int 21h
end start
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)