我在學習彙編語言,但寫入數組時遇到了一個簡單的問題。 我的程序應該讀取命令行參數,顯示它們並寫入數組。在下面的代碼中有一條標記線。如果我編譯這行註釋的程序工作正常,但如果我取消註釋它,它顯示幾個字符後掛起。這裏有什麼問題?它適用於參數較短的行,但此數組應足夠大以包含整個命令行。我在這裏錯過了什麼嗎?使用匯編語言寫入數組的問題
assume cs:kod, ds:dane
kod segment
.286
start:
mov ax,seg wstos
mov ss,ax
mov sp,offset wstos
xor cx,cx
xor ax,ax
mov si,80h
mov dl,[si]
mov cl,dl
mov ah,2h
int 21h
inc si
xor di,di
petla:
inc si
mov dl,[si]
;mov [tablica + di],dl <<<< this line
test dl,dl
jz sprawdz
int 21h
inc di
dalej:
loop petla
sprawdz:
mov al,[si+1]
cmp al,0
jne dalej
koniecprogramu:
mov ax,4c00h
int 21h
dane segment
tablica db 128 dup(0)
dane ends
stos1 segment STACK
dw 256 dup(?)
wstos dw ?
stos1 ends
感謝您的幫助。我昨天自己實際解決了這個問題。 ;)問題不是初始化ds寄存器。現在一切正常。一直認爲,假設命令爲我做。那麼這個命令實際上在做什麼?找不到任何地方。 – Dcortez
當彙編程序試圖計算標籤的地址/偏移量(在ds:segment中)時,它參考了assume指令中的參數。這當然預設,ds包含假定的段的值。另一個用途是調用/調用宏,其中可以假設指針(例如di)指向字節,單詞,雙字或甚至結構。 –