-2
.model small
.stack
.data
msg1 db "Enter string max of 9 characters: $"
msg2 db 13,10, "Enter a number: $"
msg3 db 13,10, "Midstring: $"
strNine db "$"
num db 0,"$"
mid db "$"
varName label byte
maxL db 10
actL db 0
actCont db 10 dup("?")
.code
mov ax,@data
mov ds,ax
;-------------------- Input String ---------------------
mov ah,9
lea dx,msg1
int 21h
mov ah,0ah
int 21h
mov strNine,al
mov bh,strNine
;-------------------- Number ---------------------
mov ah,9
lea dx,msg2
int 21h
mov ah,1
int 21h
mov num,al
mov bl,num
;-------------------- Midstring ---------------------
mov ah,9
lea dx,msg3
int 21h
mov ah,4ch
int 21h
END
어셈블리 문자열을 처음 접했으므로 중앙 스트링을 찾아야합니다.어셈블리 언어 : 중간 스트링을 얻기위한 프로그램 완료
예상 동작 :
Enter max of 9 String: helloword
Enter a number: 3
Midstring: lloword
선행 공백의 시간 및 전자 때문에 사용자에 의해 입력 된 숫자의 삭제한다.
얻었다는 I의 한 색인
나는 단지 필요한 몇 가지 팁/가이드에 사용되는 내가 BX 메모리에 저장 한 문자열과 숫자가 사용자로부터 입력을 얻는 것입니다 유일한 부분 너희들로부터 프로그램을 끝내라.
SO가 가이드를 요청하기에 적합한 장소가 아니지만 http://stackoverflow.com/tags/x86/info에는 문서 및 가이드 링크가 많이 있습니다. 팁 : 사용중인 시스템 호출에 대한 문서를 확인하십시오. DOS 읽기 문자열 함수가 버퍼에 대한 포인터를 필요로하는지 확실히 확인하십시오. 나는 현재의 프로그램이 심지어 전체 문자열을 인쇄 할 수 있을지 의심 스럽다. 후행 부분 문자열은 특수 문자로 끝나는 문자열에서 자주 발생합니다. 시작 지점에 대한 포인터를 전달하면 여전히 같은 위치에서 끝납니다. –
@PeterCordes 감사합니다. 팁이나 가이드를 가져 가서 죄송합니다. 임은 레지스터와 16 진수 코드를 사용하는 방법에 대해 지금 당장 혼란스러워합니다. –
아아 = 코드 DOS 시스템 호출을 의미하는 경우 시스템 호출이 수행하는 작업에 대한 문서의 DOS 인터럽트 목록을 확인하십시오. 중간 문자열 문제는 포인터 수학에 불과합니다. –