微机原理课程设计波形发生器 下载本文

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页