当前位置:编程学习 > 汇编语言 >>

汇编语言实现随机抽奖

有32个数值,每次随机抽取一个数值,抽过的数值,不能再次抽取,连续抽取7次。写出实验程序。 要求:每次收取的号码,显示到屏幕上,收取结束后,用英文提示:END.
答案:你可以这样,首先把这些数无规律的放到32个空间中去,再用DPTR指向他们中的第一个,后面对DPTR自加,每次回到最后一个数存放的位置时,便让其从头再自加。由于数子存放 是乱序的,加上程序的执行速度很快,这样你每次抽取的数也能保证是随机的。
MOV R0,#00H    ;用来记录你是第几次抽取,并在LOOP5中用目前抽取的跟前面抽取出来的对比,如果跟前面的一样便选择用这一空间后的那个值,重复对比,确定不再相同为止.
MOV DPTR,1000H
MOV A,01
LOOP1:
MOVX @DPTR,A
INC DPTR
INC A
CJNE A,32,LOOP1
;;;;;;;;;;以下是程序一直处于自动运行状态;;;;;
LOOP3:
MOV DPTR,1000H
LOOP2:
INC DPTR
MOV A,DPL
CJNE A,20H,LOOP2
LJMP LOOP3
;;;;;;抽出程序,可以使用中断;;;;当有断时进入以下程序,到于中断怎么弄,那是你硬件的问题了;;;
INTER:
CLR EA
LOOP7:
MOV R3,R0
MOV R2,#20H
LOOP5:
MOVX A,@DPTR
CLR CY
SUBB A,@R2
JZ LOOP6
DEC R3
JNZ LOOP5 
LJMP Get-it

LOOP6:
INC DPTR
MOV A,DPL
CJNE A,21H,LOOP5
MOV DPTR 1000H
LJMP LOOP7

get-it:
movx a,@dptr
mov @r2,a
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;后面你用你显示程序把20H开始的单元的数显示出来就行了;;;程序应该大都没问题,有些细节你可以自己调试一下。.

上一个:汇编语言编程从何学起
下一个:在汇编语言中经常看到 INT 21H ,这个是什么?什么时候要写它?应写在什么地方?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,