如何在数组中存储随机生成的数字。大会8086

时间:2015-04-16 09:38:22

标签: assembly x86-16

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。一直试图这个循环几个小时已经没有什么了。

2 个答案:

答案 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,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

答案 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