mov bx,0
mov cx,0
copy:
;copy col arrays.
mov dl,[col_star+bx]
mov [go_right+bx],dl
mov [go_left+bx],dl
inc [go_right+bx]
dec [go_left+bx]
;copy row arrays
mov dl,[row_star+bx]
mov [go_up+bx],dl
mov [go_down+bx],dl
dec [go_up+bx]
inc [go_down+bx]
inc bx
inc cx
cmp cx,20
jl copy
说我有20个值为col_star db 20 dup(?)和row_star db 20 dup(?) 这个循环会复制每个数组中的值。我需要操纵每个值。 这就是为什么有一个inc / dec。一直试图这个循环几个小时已经没有什么了。
答案 0 :(得分:1)
mov bl,0 ;use BX !!!
transfer:
call random_coor_star
mov dl, gen_row_star
mov [row_star+bx],dl
mov dl, gen_col_star
mov [col_star+bx],dl
inc bl ;use BX !!!
PUSH BX
call delay
PUSH BX
cmp bx,20
jl transfer
在之前的代码段中,您需要使用BX而不是BL。
修改
要存储20个值,请将cmp bx,5
和jle transfer
更改为cmp bx,20
和jl transfer
。
最好确保延迟保留所有寄存器。
transfer:
call delay
call random_coor_star
mov dl, gen_row_star
mov [row_star+bx],dl
mov dl, gen_col_star
mov [col_star+bx],dl
complete_print [row_star+bx],[col_star+bx],star_char,color
inc bx
cmp bx,5
jle transfer
答案 1 :(得分:1)
在程序中存储20对随机数的小程序(使用EMU8086和随机算法):
.stack 100h
.data
gen_row_star db ?
gen_col_star db ?
array db 40 dup(?) ;STORES 20 PAIRS OF RANDOM NUMBERS.
.code
;INITIALIZE DATA SEGMENT.
mov ax, @data
mov ds, ax
;FILL ARRAY WITH RANDOM NUMBERS.
mov di, offset array
mov bp, 20 ;GENERATE 20 PAIRS OF RANDOM NUMBERS.
fill_array:
call random_coor_star ;NUMBERS RETURN IN gen_row_star AND gen_col_star.
mov al, gen_col_star
mov [ di ], al
inc di ;POSITION FOR NEXT NUMBER IN CURRENT PAIR.
mov al, gen_row_star
mov [ di ], al
inc di ;POSITION FOR NEXT PAIR.
dec bp
jnz fill_array
;FINISH PROGRAM.
mov ax, 4c00h
int 21h
;------------------------------------------
;DR.DOOM'S RANDOM PROC.
random_coor_star proc
mov ah, 00h
int 1ah
mov ah, 00h
int 1ah
mov ax,dx
xor dx,dx
mov cx,10
div cx
add dl, 5
mov al,dl
mov gen_row_star,al
mov ah, 00h
int 1ah
mov ah, 00h
int 1ah
mov ax,dx
xor dx,dx
mov cx,50
div cx
add dl,5
mov al,dl
mov gen_col_star,al
ret
random_coor_star endp