Заменить в строке нечетные символы на "*" - Assembler
Формулировка задачи:
Ввести строку символьных данных, задавая буфер равный 30 байт.
Заменить в строке нечетные символы на "*"
Выдать полученную строку символов в 7 строку экрана, начиная с 7 позиции.
Можете помочь пожалуйста, совсем не доходит как здесь вывести именно чтобы нечетные символы он заменял...
nma label byte
max db 30
real db ?
buf db 30 dup('$')
buf2 db ?
chi2 db 2Ah
DOD ends
STO Segment Stack
DB 64 DUP(?)
STO ends
CSC Segment
PR PROC FAR
ASSUME DS:DOD,CS:CSC,SS:STO
PUSH DS
SUB AX,AX
PUSH AX
mov ax,DOD
mov ds,ax
mov ax,0600h ;чистка экрана
mov bh,07
mov cx,0000
mov dx,184fh
int 10h
mov ah,02 ;установка курсора
mov bh,00
mov dx,0100h
int 10h
mov bx,0000
lea dx,nma ;ввод
mov ah,0ah
int 21h
mov dx,0000h ;Чистим DX
LEA bx,buf
MOV cx,40
a2:
MOV ah,[bx]
jnz a3
mov ah,chi2
MOV [bx],ah
a3:
INC BX
LOOP a2
jmp a4
mov ah,03 ;установка курсора
mov bh,00
mov dx,0109h
int 10h
a4: lea dx,buf ;вывод
mov ah,09
int 21h
jmp end1
end1: ret
pr endp
csc ends
end prРешение задачи: «Заменить в строке нечетные символы на "*"»
textual
Листинг программы
xor bx,bx test bx,1
Объяснение кода листинга программы
- Задается смещение для регистра bx с помощью инструкции xor bx,bx.
- Выполняется тест на нечетность значения в регистре bx с помощью инструкции test bx,1.