c51汇编语言随机数函数,汇编语言编写随机数1.doc

汇编语言编写随机数1

dos下使用汇编产生一个随机数方法

assume cs:code

code segment

start:

mov ax,0h ;间隔定时器

out 43h,al ;通过端口43h

in al,40h ;对端口40h访问2次

in al,40h ;一个随机数已经在al中了,如果你觉得访问2次还不够随机,你可以多访问几次,一般2次就已经很随机了

mov ax,4c00h ;退出程序

int 21h

code ends

end start

问题提出

有7位数,每一位是0-9自然数,只要按动一个键,就显示一位随机数,按动7次,显示出7个数值。

提示:每次收取的号码,显示到屏幕上,抽取结束后,用英文提示:END。

题意分析

该题目为随机数输出,要求每按一次键盘,出现一个随机数,范围是0~9。首先需要写出随机数的程序,再让随机程序运行7次即可,并在运行满7次后自动输出字符“END”。

程序框图

4.程序及结果

STACK SEGMENT STACK

DW 256 DUP(?)

STACKENDS

DATASEGMENT

MESDB 'END',0AH,0DH,'$'

DATAENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START PROC FAR

MOV AX,DATA

MOV DS,AX

MOV CX,10

LOOP1:

KEY: SAHF

MOV AH,0

LAHF

MOV AH,0H

INT 16H

JZ KEY

CALL RAND

ADD BL,30H

MOV DL,BL

MOV AH,02H

INT 21H

MOV DL,' '

MOV AH,02H

INT 21H

LOOP LOOP1

NEXT:MOV DX,OFFSET MES

MOV AH,09H

INT 21H

MOV AX,4C00H

INT 21H

START ENDP

RAND PROC

PUSH CX

PUSH DX

PUSH AX

STI

MOV AH,0

INT 1AH

MOV AX,DX

AND AH,3

MOV DL,10

DIV DL

MOV BL,AH

POP AX

POP DX

POP CX

RET

RAND ENDP

CODE ENDS

END START结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值