我想在x86中編寫一個簡單的程序(使用MASM編譯)。 它的目的是編寫命令行參數輸出(每個都在一個新行中)。 這是我想出了迄今:彙編x86命令行參數
data1 segment
input db 40 dup (?) ;input
data1 ends
code1 segment
START:
mov ax,seg input
mov ds,ax
mov dx,offset input
mov di, dx
mov si, 82h
mov cl,es:[80h]
word:
mov al,es:[si]
mov ds:[di],al
inc si
inc di
cmp al,0Dh ;out of arguments? (if YES goto finish)
jz finish
cmp al,20h ;end of word? (if NO goto word)
jnz word
mov al, '$' ;line terminate
mov ds:[di], al
mov ah,09h ;write string
int 21h
xor di,di ;prepare registry for new word
call new_line
loop word
finish:
mov al, '$'
mov ds:[di], al
mov ah,09h ;write last argument
int 21h
mov ax,4ch ;end program
int 21h
new_line:
push ax
push bp
mov ax,0e0ah ;ah=0e-write char,al=0a-go to new line
int 10h
mov al,13 ;carriage return
int 10h
pop bp
pop ax
ret
code1 ends
end START
看來當在emu8086測試,但用MASM編譯後只處決的10%給予正確的結果很好地工作。 任何幫助,將不勝感激
你的程序沒有堆棧段,不必以此爲基礎工作。您的程序也不能正確終止。 – 2013-04-05 03:26:56