Ввести с клавиатуры два слова и вывести в следующей строке второе слово и последнюю букву первого слова - Assembler

Узнай цену своей работы

Формулировка задачи:

Ввести с клавиатуры два слова и вывести в следующей строке второе слово и последнюю букву первого слова.

Решение задачи: «Ввести с клавиатуры два слова и вывести в следующей строке второе слово и последнюю букву первого слова»

textual
Листинг программы
@stack  segment para stack
        db      1024 dup(?)
@stack  ends
 
@data   segment
        KbdBuf1 db      80, ?, 81 dup(?)
        KbdBuf2 db      80, ?, 81 dup(?)
        Prompt1 db      'Enter the 1st word: ', 0Dh, 0Ah, '$'
        Prompt2 db      'Enter the 2nd word: ', 0Dh, 0Ah, '$'
        MsgRes  db      'Result: ', 0Dh, 0Ah, '$'
        CrLf    db      0Dh, 0Ah, '$'
@data   ends
 
@code   segment
        assume  cs:@code, ds:@data, ss:@stack
main    proc
        ;инициализация сегментного регистра данных
        mov     ax,     @data
        mov     ds,     ax
 
        ;ввод 1-го слова
@@FirstWord:
        mov     ah,     09h
        lea     dx,     [Prompt1]
        int     21h
        mov     ah,     0Ah
        lea     dx,     [KbdBuf1]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        lea     si,     [KbdBuf1+1]
        mov     cx,     0
        mov     cl,     [si]
        jcxz    @@FirstWord
        ;ввод 2-го слова
@@SecondWord:
        mov     ah,     09h
        lea     dx,     [Prompt2]
        int     21h
        mov     ah,     0Ah
        lea     dx,     [KbdBuf2]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        lea     si,     [KbdBuf2+1]
        mov     cx,     0
        mov     cl,     [si]
        jcxz    @@SecondWord
        ;вывод результата
        mov     ah,     09h
        lea     dx,     [MsgRes]
        int     21h
        ;вывод второго слова
        mov     ah,     40h
        mov     bx,     1
        mov     cx,     0
        mov     cl,     [KbdBuf2+1]
        lea     dx,     [KbdBuf2+2]
        int     21h
        ;вывод пробела
        mov     ah,     02h
        mov     dl,     ' '
        int     21h
        ;вывод последней буквы 1-го слова
        lea     si,     [KbdBuf1+1]
        mov     cx,     0
        mov     cl,     [si]
        add     si,     cx
        mov     ah,     02h
        mov     dl,     [si]
        int     21h
        ;перевод строки
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
 
        ;завершение программы
        mov     ax,     4C00h
        int 21h
main    endp
 
@code   ends
 
        end     main

Объяснение кода листинга программы

  1. Ввод первых двух слов с клавиатуры.
  2. Вывод второго слова и последней буквы первого слова.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы