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
Để sử dụng nhiều vòng lặp trong 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
1 Like