Консультация № 198606
17.05.2020, 22:14
0.00 руб.
0 1 0
Здравствуйте! Пишу в основном на c# c++ js php html, а тут дали кучу заданий на ассемблере, в котором вообще не шарю, хелпаните с этим заданием плиз:

Нужно сделать прогу в TASM:
Ввод строки с клавиатуры (до 50 символов). Вывод строки на экран. Замена во введенной строке латинской буквы ‘W’ на латинскую букву ‘S’. Вывод полученной строки на экран под исходной строкой.


Спасибо.

Обсуждение

давно
Посетитель
404046
1
21.05.2020, 20:07
общий
Сделал. Вот решение если кому понадобится

.model small
.stack 100h
extrn write:proc ;внешняя процедура для вывода чисел
.data

;параметры для ввода
Enter_String db 50 ;максимальная длина
Len_S db ? ;реальная длина
Str_Field db 50 dup(' ') ;введенные символы (поле ввода - цепочка)

Ns db ' $' ;поле для размещения числа в строковом
;представлении для последующего вывода
;под число отводится 6 позиций (можно и больше)
public Enter_String,Len_S,Str_Field,Ns
;===================================
S2 db 13,10,'Vvedite stroky: $'
S3 db 13,10,'Obrabotannaya stroka:',13,10,'$'
S4 db 13,10,'press <Enter> to exit.$'
S5 db 13,10,'kolvo zamen = $'
k dw 0
;===================================
.code
begin:
mov ax,@data ;инициализация
mov ds,ax
mov es,ax

mov ah,9 ;вывод подсказки ввода
lea dx,S2
int 21h
mov ah,10 ;ввод строки
lea dx,Enter_String
int 21h

cld
lea di,Str_Field
mov cl,Len_S
for: mov al,'w'
jcxz vyvod
repne scasb
je zamena
vyvod:
;вывод результата
mov al,'$'
stosb
mov ah,9
lea dx,S3
int 21h
mov ah,9
lea dx,Str_Field
int 21h
mov ah,9
lea dx,S5
int 21h
mov ax,k
call write
mov ah,9
lea dx,S4
int 21h
mov ah,10
lea dx,Str_Field
int 21h
jmp exit
zamena:
inc k
dec di
mov al,'s'
stosb
jmp for
exit:
mov ah,4ch ;выход в DOS
int 21h
end begin
Форма ответа