[英]Directory in assembly
我必須讀取 2 個目錄(dir1 和 dir2)並創建 dir1/dir2 目錄。 我的問題是: cmp al,13
什么作用? 當我寫mov ah,01h,int 21h
,in 將是我讀取的字符,它只有一個字符(例如“a”),那么如何將 al 與 0 進行比較?
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
檢索到的字符由其ascii字符代碼表示,代碼13是回車
它正在測試您第二次調用 int 21h 返回的字符是否為回車符。 如果是,則跳出循環,否則繼續循環並處理后續字符。
mov ah,01h ; 01h = Read character
int 21h ; Call (do read)
bucla1:
mov dir1[si],al ; Store result
inc si ; Increase si
int 21h ; Call again (do read)
cmp al,13 ; Is carriage return?
je sf1 ; Yes, jump out of loop
mov dir1[si],al ; Store result
jmp bucla1 ; Loop
sf1:
mov dir1[si],0 : Null terminate result
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.