Мне нужно написать программу для моего класса сборки, которая позволяет пользователю вводить свое полное имя, а затем программа использует и массив для хранения символов и печати их в следующем порядке: «Фамилия», «Отчество» (необязательно и может иметь более одного среднего имени »« Имя ». Моя программа почти сделала это, за исключением того, что она печатает «$» в начале фамилии. Я попытался увеличить индекс (bx), но затем он дает мне искаженный вывод. Я новичок в ассемблере, поэтому, пожалуйста, потерпите меня. Я думаю, что мои макросы могут мешать моему выводу, когда я увеличиваю индекс. Также, пожалуйста, потерпите мое форматирование. Я никогда не смогу правильно передать код. Спасибо в Продвигать!
Вот мой код:
;This Program Reads in a user's full name and prints out the results in the format
'Lastname', 'Middle'(Optional), First using an array.
include pcmac.inc
.MODEL SMALL
.586 ;Allows Pentium instructions. Must come after .MODEL
.STACK 100h
.DATA
MAXBUF EQU 100
GetBuf DB MAXBUF
GetCnt DB ?
CharStr DB MAXBUF DUP (?)
Message DB 'Enter your full name',10,13,'$'
Message2 DB 'Here is your name in the correct format', 10,13,'$'
Count DB 0
.CODE
Array PROC
_Begin
_PutStr Message
_GetStr GetBuf
mov bl, GetCnt
sub bh,bh
FindLast:
cmp [CharStr+bx],32
je SeperateLast
dec bx
inc Count ;Counter to record how long the lastname is
jmp FindLast
SeperateLast:
mov [CharStr+bx],'$'
_PutStr Message2
jmp Printlast
FirstName:
_PutCh ',',32 ;Add comma and space for readability
_PutStr CharStr ;Print up to the inputted dollar sign
_PutCh 10,13
jmp Done
Printlast:
cmp Count,0
je FirstName
_PutCh[CharStr+bx] ;Print Last Name Character by Character
inc bx
dec Count
jmp Printlast
Done:
_Exit 0
Array ENDP
END Array
BX
на единицу, а затем уменьшив количество на 1. Итак, послеmov [CharStr+bx],'$'
попробуйте добавитьinc bx
, а затемdec Count
- person Michael Petch   schedule 05.12.2015