如何在数组中存储随机生成的数字.组件 8086


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. 已经尝试了几个小时的循环,已经什么也没发生。

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,5jle transfer更改为 cmp bx,20jl 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

在数组中存储 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  

最新更新