⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cyl1.asm

📁 这是一个关于微机原理汇编程序设计的随机数图程序
💻 ASM
字号:
DATA   SEGMENT
INFO1     DB 0DH,0AH,'         WELCOME TO COME HERE!$'
INFO2     DB 0DH,0AH,'      this is a SUIJISHUTU program!$'

LINE   DW   0                     ;矩形块左上角的行
ROW    DW   0                     ;矩形块左上角的列
PIX    DB   0                     ;矩形块的颜色
DATA   ENDS

CODE         SEGMENT
             ASSUME  CS:CODE,DS:DATA
START:  											;主程序
 				  MOV AX , DATA
             MOV DS , AX            
				  MOV AH , 0
             MOV AL , 0EH
             INT 10H                 ;设置320×200彩色图形方式
             
             MOV AH,0BH
             MOV BH,01
             MOV BL,0
             INT 10H                 ;设置彩色调色板
;*****定义一个宏*****
show  MACRO b
          		LEA DX,b
          		MOV AH,9
          		INT 21H
          		ENDM
;**********************
          		show INFO1
          		show INFO2

           
				  

L1:	  			
				  PUSH AX
				  IN  AL,60h  
				  CMP  AL,10H ;Q键的扫描码
				  POP AX
  				  JE  quit   
				  CALL RAND
				  CALL RAND1
	     		  MOV PIX,BL
	          MOV ROW,BX
				  MOV DH,00H
				  MOV CH,00H
				  MOV DL,AL
				  MOV CL,AH
	     		  MOV LINE,BX
				  CALL DISP_RECT
             CALL DELAY
				  CALL DELAY
				   
  				  JMP   L1   
    
quit:        MOV AH , 4CH
             INT 21H
					                 ;返回DOS
;显示矩形块的子程序,矩形块的显示位置由DATA段中的LINE、ROW变量指定,
;颜色由PIX变量指定,矩形块的大小是固定的,为10个点宽,50个点高。

RAND  PROC
      PUSH CX
      PUSH DX
      PUSH AX
      STI
      MOV AH,0             ;读时钟计数器值
      INT 1AH
      MOV AX,DX            ;清高6位
      AND AH,3
      MOV DL,101           ;除101,产生0~100余数
      DIV DL
      MOV BL,AH            ;余数存BX,作随机数
      POP AX
      POP DX
      POP CX
      RET
RAND  ENDP

RAND1 PROC
PUSH CX
      PUSH DX
      PUSH AX
      STI
      MOV AH,0             ;读时钟计数器值
      INT 1AH
      MOV AX,DX            ;清高6位
      AND AH,00H
      MOV DL,51             ;除51,产生0~50余数
      DIV DL
      MOV BH,AH            ;余数存BH,作随机数
      POP AX
      POP DX
      POP CX
      RET
RAND1  ENDP


DISP_RECT    PROC  near
             PUSH AX
             PUSH CX
             PUSH DX
             PUSH SI
             PUSH DI
             MOV AH , 0CH       ;指明写点调用
             MOV AL , PIX       ;取点的颜色
				  CALL RAND
				  MOV BH,00H
             MOV DI , BX     ;用于控制行显示循环
             MOV DX , LINE      ;取点的行坐标
DISP_2: 
				  CALL RAND
				  MOV  BH,00H
             MOV SI ,BX     		;控制列显示循环
             MOV CX , ROW       ;取显示点的列坐标
DISP_1: 
             INT 10H            ;完成点的显示
             INC CX             ;列坐标加1(行不变)
             DEC SI
             JNZ DISP_1         ;循环显示完一行的10个点
             INC DX             ;行坐标加1
             DEC DI
             JNZ DISP_2         ;循环显示完100行
             POP DI
             POP SI
             POP DX
             POP CX
             POP AX
             RET
DISP_RECT    ENDP
delay        proc near       
             push cx
             push dx
             mov dx,5000
d11:         mov cx,25000  
d12:         loop d12
             dec   dx
             jnz   d11
             pop   dx
             pop   cx
             ret
delay        endp
CODE         ENDS
             END  START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -