INC SI ;指向下个输出值
CMP SI,64 ;判断是否已经输出64点 JNZ LO ;若不是则跳转L0 MOV SI,0H ;否则SI清零 LO: MOV JISHU,SI ;将计数值保存 JMP EOI ;跳转到中断结束 TRIANGLE:
MOV SI,JISHU ;将计数值放入SI
MOV AL,[SANBUF+SI] ;将输出的数值放入AL MOV DX,DA0832 OUT DX,AL
INC SI CMP SI,64 JNZ LO MOV SI,0H L1: MOV JISHU,SI JMP EOI SINE:
MOV SI,JISHU MOV AL,[SINBUF+SI] MOV DX,DA0832 OUT DX,AL
INC SI CMP SI,64 JNZ LO MOV SI,0H L2: MOV JISHU,SI JMP EOI
EOI: MOV DX,MY8259_OCW2 MOV AL,20H OUT DX,AL JMP QUERY
INPUT PROC NEAR XOR DX,DX XOR CX,CX MOV DX,OFFSET MESS2 MOV AH,09H INT 21H
MOV DL,0DH MOV AH,02H INT 21H
;将输出值写入0832 ;指向下个输出值
;判断是否已经输出64点 ;若不是则跳转L0 ;否则SI清零 ;将计数值保存 ;跳转到中断结束 ;将计数值放入SI
;将输出的数值放入AL ;将输出值写入0832 ;指向下个输出值
;判断是否已经输出64点 ;若不是则跳转L0 ;否则SI清零 ;将计数值保存 ;跳转到中断结束 ;向实验系统中8259发送中断结束命令 ;输入存储程序 ;DX清零 ;CX清零
;提示输入频率 ;换行 第16页
MOV DL,0AH MOV AH,02H INT 21H
MOV SI,OFFSET SHUJU ;SI指向数据起始地址
MOV DI,SI ;DI指向数据起始地址 LL: MOV AH,01H ;输入数据 INT 21H
CMP AL,' ' ;若为空格则结束输入否则继续 JZ LL1
SUB AL,30H MOV [SI],AL INC SI JMP LL
LL1: DEC SI MOV AX,0H MOV CX,0AH DEC DI MOV DX,0H LL2: INC DI MUL CX ADD AL,[DI] ADC AH,0H CMP DI,SI JNZ LL2 MOV FREQZ,AX MOV DX,00H MOV AX,7080H DIV FREQZ MOV COUNT,AX MOV COUNT1,AL MOV COUNT2,AH RET
INPUT ENDP
DELAY PROC NEAR
DLY: PUSH CX MOV CX,0FFFH DLY0: LOOP DLY0 POP CX RET DELAY ENDP CODE ENDS
END START
;将输入值变为真实值 ;将数据存入内存 ;指向下一个内存空间 ;指向数据最后一个有效地址 ;AX清零
;CX存入乘数10 ;DI自减一次 ;DX清零
;DI指向数据起始地址 ;AX内容乘十
;加上DI所指向的内容 ;AH加上进位
;判断是否所有数据都以计算完 ;否,则继续
;将计算结果存入FREQZ中 ;DX清零 ;AX置入除数 ;计算计数初值
;计数初值存入COUNT ;低字节存入COUNT1 ;高字节存入COUNT1 ;CX入栈
;CX装入初值 ;循环DLYO ;CX出栈 第17页