Để sử dụng nhiều vòng lặp trong assembly thì phải làm thế nào?

mọi người cho mình hỏi để sử dụng nhiều vòng lặp trong một bài tập assembly thì phải làm thế nào

1 Like

mình không nhớ cú pháp nhưng về tư tưởng thì mình nghĩ là đặt Label rồi ở dưới kiểm tra điều kiện rồi dùng Jump đến label đó để chạy lại phần code ở sau Label trên thêm 1 lần nữa, cứ thế là bạn có vòng lặp thôi.

2 Likes

mình muốn hỏi về vòng lặp lồng trong một vòng lặp ý

1 Like

Ý tưởng bạn Sáng Béo là đúng như bạn nói ấy.
Là ở dưới label, có 1 label nữa

label1:
 //code

 label2:
   //condition
   je label2

 //condition
 je label1
6 Likes

Example

Đây là nguồn gốc của lệnh goto trong c/c++ và người ta khuyên không nên dùng

1 Like
.model small
.data
A	dw	0, 1, 1, 0, 0, 0, 1, 1
n	dw	7
s	dw	?
.code
Start:		
	mov  ax,@Data 
	mov  ds, ax

        mov  ax,0
        mov  s,ax
        mov  bx,2
        mov  ax,A
        mov  cx,n
        
for:    
        mul  bx
        loop for
        add  ax,s
        mov  s,ax
        mov  si,2
        mov  cx,6
for1:   
        mov  ax,A[si]
        mov  n,cx
        mov  ax,n    
        sub  ax,1
        mov  n,ax
        mov  cx,n
        loop for
        add  ax,s
        mov  s,ax
        add  si,2
        loop for1




.model small
.data
A	dw	0, 1, 1, 0, 0, 0, 1, 1
n	dw	8
s	dw	?
s8      dw	?
.code
Start:		
	mov  ax,@Data 
	mov  ds, ax

        mov  ax,0
        mov  s,ax
        mov  si,0
        mov  bx,2
        mov  cx,n
        mov  ax,A[si]
        dec  cx
for1:
        mul  bx
        loop for1
        add  ax,s
        mov  s,ax
        add  si,2
        loop for

bạn xem hộ mình 2 đoạn code này được ko
cả 2 đều ko chạy ý

1 Like

Sao bạn lại loop ngay đầu thế kia O_O
loop for là check cx, cx != 0 thì nó trở lại label for
Mà trc đó chỉ có 1 đoạn là mul bx, mà mul ko dùng cx

Nên:

for:
 mul bx
 loop for

bị lặp vĩnh viễn rồi :?

6 Likes

cảm ơn bạn nhiều :slight_smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?