growup
06-12-2004, 03:22
trong khi làm prj, mình gặp 1 lỗi tại dòng sau:
mov ax,es:[si]
vấn đề là nếu si nhận 1 giá trị bất kì <> 0ffffh thì ko có gì , nhưng nếu cho si nhận giá trị là 0ffffh thì chương trình gặp lỗi và thoát ra ngay.
Mình viết thử 1 cái test để kiểm tra thì đúng là lỗi xảy ra với dòng code trên nếu si=0ffffh:
;----------------------------------------------------------
.model small
.code
org 100h
start:
jmp main
main
mov ax,0
mov es,ax
mov si,0ffffh ;si=0ffffh
mov ax,es:[si] ; <--------error
mov ah,2
mov dl,'O'
int 21h
mov ah,4ch
int 21h
RET
main EndP
end start
;----------------------------------------------------
trong test trên nếu si <> 0ffffh thì chữ 'O' sẽ được in ra, nếu gặp lỗi tai dòng đã chỉ ra thì chương trình thoát ngay tại đấy và các lệnh sau ko được thi hành (chữ '0' ko in ra ).
các bạn giải thích cho mình vụ này với !
mov ax,es:[si]
vấn đề là nếu si nhận 1 giá trị bất kì <> 0ffffh thì ko có gì , nhưng nếu cho si nhận giá trị là 0ffffh thì chương trình gặp lỗi và thoát ra ngay.
Mình viết thử 1 cái test để kiểm tra thì đúng là lỗi xảy ra với dòng code trên nếu si=0ffffh:
;----------------------------------------------------------
.model small
.code
org 100h
start:
jmp main
main
mov ax,0
mov es,ax
mov si,0ffffh ;si=0ffffh
mov ax,es:[si] ; <--------error
mov ah,2
mov dl,'O'
int 21h
mov ah,4ch
int 21h
RET
main EndP
end start
;----------------------------------------------------
trong test trên nếu si <> 0ffffh thì chữ 'O' sẽ được in ra, nếu gặp lỗi tai dòng đã chỉ ra thì chương trình thoát ngay tại đấy và các lệnh sau ko được thi hành (chữ '0' ko in ra ).
các bạn giải thích cho mình vụ này với !