2 개의 디렉토리 (dir1 및 dir2)를 읽고 dir1/dir2 디렉토리를 만들어야합니다. 제 질문은 : cmp al,13
은 무엇을합니까? 내가 mov ah,01h,int 21h
이라고 쓸 때, 알은 내가 읽은 문자가 될 것이고, 그것은 오직 한 문자 (예를 들어 'a') 일 뿐이다. 그래서 어떻게 알을 0과 비교할 수 있는가? 자신의 아스키 문자 코드 및 코드 (13)에 의해 표시되는 검색어셈블리의 디렉토리
assume cs:code,ds:data
data segment
mesaj1 db 10,13,'First dir $',10,13
mesaj2 db 10,13,'Second dir $',10,13
dir1 db 30 dup(?)
dir2 db 30 dup(?)
pnf db 10,13,'Path not found.$',10,13
acd db 10,13,'Acces denied, or pathname already exists.$',10,13
gata db 10,13,'The directory was created.$',10,13
data ends
code segment
start:
mov ax,data
mov ds,ax
;read the first direcory
mov ah,09h
mov dx,offset mesaj1
int 21h
mov si,0
mov ah,01h
int 21h
bucla1:
mov dir1[si],al
inc si
int 21h
cmp al,13 ;HERE
je sf1
mov dir1[si],al
jmp bucla1
sf1:
mov dir1[si],0
;read the second directory
mov ah,09h
mov dx,offset mesaj2
int 21h
mov si,0
mov ah,01h
int 21h
bucla2:
mov dir2[si],al
inc si
int 21h
cmp al,13 ;HERE
je sf2
mov dir2[si],al
jmp bucla2
sf2:
mov dir2[si],0
mov ah,3Bh
mov dx,offset dir1
int 21h
jc eroare
mov ah,39h
mov dx,offset dir2
int 21h
jc er
mov ah,09h
mov dx,offset gata
int 21h
eroare:
cmp ax,3
je pathnotfound
jmp sf
pathnotfound:
mov ah,09h
mov dx,offset pnf
int 21h
jmp sf
er:
cmp ax,3
je pathnotfound
cmp ax,5
je accesdenied
accesdenied:
mov ah,09h
mov dx,offset acd
int 21h
sf:
mov ax,4C00h
int 21h
code ends
end start
'13'은 캐리지 리턴 (입력)에 대한 아스키 코드입니다. 이 루프는 줄 끝까지 입력을 읽습니다. – Jester