-1
在下面的代碼斧頭,而不是DX與中斷21
data segment
; add your data here!
num db 0,0,0,0
sum db 0
str db "Sum is : $"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
;;read array from input
mov cx,4;set loop counter
L1:
mov ah,7;interupt 7 use for reading character without echo
int 21h
mov num,al;mov al to num
add sum,al
inc num;nex element
LOOP L1
sub num,4;go to first position
;;;;;;;;;;;;;;;;;;;;;;;;
;;show sum
lea dx,str;;-----------------I'm changing this line-----------------------
mov ah,9;interupt 9 for writing string
int 21h
;;;;;;;;;;;
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
如果我改變DX斧子
lea dx,str --> lea ax,str
的出放成爲1 'Sum is
但是,如果使用lea ax,str
這是正確的>Sum is :
我無法弄清楚原因!
爲什麼將dx更改爲ax會導致錯誤的輸出?
你怎麼知道用於打印字符串的中斷?特別是,你如何告訴它打印什麼字符串? –
@ScottHunter tnx我讀完這個鏈接後發現原因:) http://spike.scu.edu.au/~barry/interrupts.html ------- Interupt使用dx寄存器寫入輸出 – Omid