DATAS SEGMENT AA db 5 dup(?) DATAS ENDS codes segment assume cs:codes,DS:DATAS start: push ds push ax xor ax,ax mov ax,datas mov ax,ds ; STI MOV AH,0 INT 1AH ;读时钟计数器值到DX MOV AX,DX AND AH,3 ;清高6位 MOV DL,101 DIV DL ;除101,产生0~100余数 MOV BL,AH ;余数存BX,作随机数 MOV BH,00H CALL MCAT ;MOV AH,02 ;INT 21H MOV ah,4CH INT 21H MCAT PROC ;将随机数转换为16进制表示的ASCII码字符子程序 PUSH AX push bx PUSH CX PUSH DX CMP BX,9 JA S1 ;两位数跳转 vn1: ADD BL,30H ;转换为ASCII码 MOV AA,BL MOV AA+1,'$' ;存字符串送AA LEA DX,AA ;字符串地址送DX MOV AH,9 INT 21H ;输出ASCII码 JMP s3 ;小于9直接输出 s1:MOV CL,4 ;计数器置4 MOV AL,0 PUSH BX