2017-01-11 1 views
0

나는 구현을 위해 내가 여기에 코드를 MS-DOS (DOSBox)를 사용하고, 어셈블리 언어를 사용하여 간단한 프로그램을 만들어 :왜 내 프로그램에 무한 루프가 있습니까?

.model small 
.code 
org 100h 

mulai: 

mov ah, 02h 
mov dl, 'Z' 
mov cx, 10h 

lagi: 

int 21h 
inc dl 
inc cx 

loop lagi 
int 20h 

end mulai 

내가 loop 구현을 시도했지만 infinite loop을 얻을, 그래서 내 코드에 어떤 문제가 있습니까?

+1

그리고'org 100h'을 사용하고 있기 때문에 COM 프로그램을 만들고 싶습니다. (EXE가 아닙니다). 그렇다면'.model tiny'를 사용하고 싶습니까? –

+0

16 번 (10h) 반복하려는 경우 루프 명령이 각 인터레이션에서 자동으로'cx'를 감소시킬 때'dec cx'를 제거하면됩니다 –

+0

디버거를 먼저 묻지 않으시겠습니까? – Ped7g

답변

5

loop은 각 루프 반복에 cx을 증가하기 때문에, cx가 0이 될하지 않습니다 당신이 무한 루프가 0

하지 cx를 감소하고, cx 경우 주어진 주소로 이동합니다.