我想在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