Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Kdsfofwe21
Статус: 2-й класс
Рейтинг: 1
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 0
∙ повысить рейтинг »
cain52
Статус: 3-й класс
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1746
Дата выхода:11.07.2019, 15:15
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:75 / 23
Вопросов / ответов:1 / 1

Консультация # 195928: Здравствуйте! smile Прошу помощи в следующем вопросе: Я не дружу с Ассемблером, вот вообще не понимаю его. я пытался учить его, но видимо не дано мне. По этому рассчитываю на вашу помощь с этой заданием. Пожалуйста помогите

Консультация # 195928:

Здравствуйте! smile Прошу помощи в следующем вопросе:

Я не дружу с Ассемблером, вот вообще не понимаю его. я пытался учить его, но видимо не дано мне. По этому рассчитываю на вашу помощь с этой заданием.
Пожалуйста помогите smile

есть задание: нужно продублировать согласные буквы слова или текста , но текст считать из файла, а потом записать обратно в файл.

вот код, который просто дублирует согласные буквы:

Код (Assembler) :: выделить код
.model small
 
stack 200h
 
data
        CrLf            db      0Dh, 0Ah, '$'
        msgSource       db      0Dh, 0Ah, 'The source string:', 0Dh, 0Ah, '$'
        msgResult       db      0Dh, 0Ah, 'The Result string:', 0Dh, 0Ah, '$'
        msgPressAnyKey  db      0Dh, 0Ah, 'Press any key to exit...', '$'
        Consonants      db      'bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ'
        Len             =       $-Consonants
        Text            db      'Global trade losing momentum as trade tensions persist - WTO'
        N               =       $-Text
code
 
main    proc
        ;инициализация сегментного регистра ds адресом сегмента данных
        mov     ax,     @data
        mov     ds,     ax
        ;вывод исходной строки
        mov     ah,     09h
        lea     dx,     [msgSource]
        int     21h
        mov     ah,     40h
        mov     bx,     1
        mov     cx,     N
        lea     dx,     [Text]
        int     21h
        ;вывод результата
        mov     ah,     09h
        lea     dx,     [msgResult]
        int     21h
        ;обработка строки и вывод результата
        lea     si,     [Text]
        mov     cx,     N
        mov     ax,     ds
        mov     es,     ax
        cld
        @@for:
                lodsb
                push    cx
                int     29h
                lea     di,     [Consonants]
                mov     cx,     Len
                repne   scasb
                jnz     @@next
                int     29h
        @@next:
                pop     cx
        loop    @@for
 
        ;ожидание нажатия любой клавиши
        mov     ah,     09h
        lea     dx,     [msgPressAnyKey]
        int     21h
 
        mov     ah,     00h
        int     16h
 
        ;завершение программы
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

Дата отправки: 01.07.2019, 15:10
Вопрос задал: Matvey (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, Matvey!

Смотрите приложение:

Код (Assembler) :: выделить код
model	small
code
begin:	mov	ax,@data
	mov	ds,ax
	mov	es,ax
	cld
	mov	ax,3D42h
	lea	dx,dbInp
data
dbInp	db	'190711i.txt',0
code
	int	21h
	mov	dwHndl1,ax
data
dwHndl1	dw	-1
code
	jnc	@@01
	lea	dx,dbErr1
data
dbErr1	db	10,13,'error dont open first file$'
	jmp	@@07
code
@@01:	mov	ah,3Ch
	xor	cx,cx
	lea	dx,dbOut
data
dbOut	db	'190711o.txt',0
code
	int	21h
	mov	dwHndl2,ax
data
dwHndl2	dw	-1
code
	jnc	@@02
	lea	dx,dbErr2
	jmp	@@07
data
dbErr2	db	10,13,'error dont open second file$'
code
@@02:	mov	ah,3Fh
	mov	bx,dwHndl1
	mov	cx,1
	lea	dx,dbBuff
data
dbBuff	db	?
code
	int	21h
	or	al,al
	jz	@@06
@@04:	lea	di,dbCheck
data
dbCheck	db	'bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ'
szCheck	equ	$-dbCheck
code
	mov	cx,szCheck
	mov	al,dbBuff
	repne	scasb
	jnz	@@05
	mov	ah,40h
	mov	bx,dwHndl2
	mov	cx,1
	lea	dx,dbBuff
	int	21h
@@05:	
	mov	ah,40h
	mov	bx,dwHndl2
	mov	cx,1
	lea	dx,dbBuff
	int	21h
	jmp	@@02
@@06:	lea	dx,dbPress
data
dbPress	db	10,13,'press any key . . .$'
code
@@07:	mov	ax,dwHndl1
	cmp	ax,-1
	jz	@@08
	mov	ah,3Eh
	int	21h
@@08:	mov	ax,dwHndl2
	cmp	ax,-1
	jz	@@09
	mov	ah,3Eh
	int	21h
@@09:	mov	ah,9
	int	21h
	xor	ax,ax
	int	16h
	mov	ax,4C00h
	int	21h
stack	200h
	end	begin


Удачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 11.07.2019, 14:08
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное