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

📄 da.asm

📁 汇编语言编写的模拟信号到数字信号的转换程序
💻 ASM
字号:
  ;EXP_Analog_to_Digital

.486
;-------------------------------------------
DSEG	SEGMENT	USE16
    A_0809      EQU   230H
        OLD0C       DD ?
	T_DELY	DD 500000
      DISPLAY1    DB 4 DUP(0)
      RESULT      DB ?
      TIME2       DD  1000                                                           ;延时1ms所用常量
      TAB2        DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH                         ;译码器
      TEN         DW  10
      MESG        DB 'SRART ',0AH,0DH,'$'       ;显示提示消息
      SSE         DB  196
DSEG	ENDS

;-------------------------------------------
CSEG	SEGMENT	USE16
STARTUP:
	ASSUME	CS:CSEG,DS:DSEG
	MOV	AX,DSEG
	MOV	DS,AX


      MOV   AH,09H             ;屏幕显示
      MOV   DX,OFFSET MESG
      INT   21H

	CLI
	CALL	RD0C
	CALL	WR0C
	CALL	I8259	             ;8259初始化


      
	STI
 
      MOV   DX,A_0809
      OUT   DX,AL

RLOOP:
      CALL  DISP
	MOV	AH,1		      ;按下任意键返回DOS
	INT	16H
	JZ	RLOOP
EXIT:
      CALL	RESET1
	MOV	AH,4CH		;退出, 并清零显示
      MOV   AL,0H
      MOV   DX,201H
      OUT   DX,AL
	INT	21H

;-------------------------------------------
SERVICE	PROC
	PUSH	DS
      PUSH  AX
      PUSH  BX
	MOV	AX,DSEG

      MOV	DS,AX

	MOV	DX,A_0809	     	;模->数转换
	IN	AL,DX

      MOV   DX,230H
      OUT   DX,AL
      
      MUL   SSE
      MOV  DX,0
      DIV  TEN                 ;无符号除法,商在AL中,余数在AH中
      MOV  DISPLAY1[4],DL      ;最低位,显示在数码管最右边

      MOV  DX,0

       DIV  TEN
       MOV  DISPLAY1[3],DL

       MOV  DX,0

       DIV  TEN
       MOV  DISPLAY1[2],DL

       MOV  DX,0

       DIV  TEN
       MOV  DISPLAY1[1],DL

       MOV  DISPLAY1[0],AL          ;转化完毕

	MOV	AL,20H		     ;中断结束命令
	OUT	20H,AL
      POP   BX
      POP   AX
	POP	DS
	IRET
SERVICE	ENDP
;-------------------------------------------

;DELY	PROC
;	PUSH	CX
;      PUSH	DX
;	PUSH	AX
;	MOV	AH,86H
;	MOV	CX,WORD PTR T_DELY+2
;	MOV	DX,WORD PTR T_DELY
;	INT	15H
;	POP	AX
;	POP	DX
;	POP	CX
;	RET
;DELY	ENDP
;---------------8259--------------
I8259	PROC
	IN	AL,21H
	AND	AL,11101111B
	OUT	21H,AL
	RET
I8259	ENDP
;---------------READ--------------
RD0C	PROC
	MOV	AX,350CH
	INT	21H
	MOV	WORD PTR OLD0C,BX
	MOV	WORD PTR OLD0C+2,ES
	RET
RD0C	ENDP
;---------------WRITE-------------
WR0C	PROC
	PUSH	DS
	MOV	AX,CSEG
	MOV	DS,AX
	MOV	DX,OFFSET SERVICE
	MOV	AX,250CH
	INT	21H
	POP	DS
	RET
WR0C	ENDP
;--------------RESET-------------
RESET1	PROC
      PUSH  DX
      PUSH  AX
	MOV	DX,WORD PTR OLD0C
	MOV	DS,WORD PTR OLD0C+2
	MOV	AX,250CH
	INT	21H
	IN	AL,21H
	OR	AL,00010000B
	OUT	21H,AL		     ;屏蔽用户中断
      POP   AX
      POP   DX
	RET
RESET1	ENDP
;---------------------------------
;-----------------数码管扫描显示--------------------------
DISP    PROC
                                    ;数码管的CS端接200H~207H
        MOV       AL,[DISPLAY1]
        MOV       BX,OFFSET TAB2    ;查7段译码表
        XLAT      TAB2              ;数字编码存入AL
        
        OR        AL,80H
        
        MOV       DX,201H
        OUT       DX,AL             ;输出字型码
        MOV       DX,200H
        MOV       AL,01H
        OUT       DX,AL             ;第一位显示
        CALL      DELAY2            ;延时1ms

        MOV       AL,[DISPLAY1+1]
        MOV       BX,OFFSET TAB2    ;查7段译码表
        XLAT      TAB2              ;数字编码存入AL
        
        MOV       DX,201H
        OUT       DX,AL             ;输出字型码
        MOV       DX,200H
        MOV       AL,02H
        OUT       DX,AL             ;第二位显示
        CALL      DELAY2            ;延时1ms

        MOV       AL,[DISPLAY1+2]
        MOV       BX,OFFSET TAB2    ;查7段译码表
        XLAT      TAB2              ;数字编码存入AL
        
        MOV       DX,201H
        OUT       DX,AL             ;输出字型码
        MOV       DX,200H
        MOV       AL,04H
        OUT       DX,AL             ;第三位显示
        CALL      DELAY2            ;延时1ms

        MOV       AL,[DISPLAY1+3]
        MOV       BX,OFFSET TAB2    ;查7段译码表
        XLAT      TAB2              ;数字编码存入AL
        
        MOV       DX,201H
        OUT       DX,AL             ;输出字型码
        MOV       DX,200H
        MOV       AL,08H
        OUT       DX,AL             ;第四位显示
        CALL      DELAY2            ;延时1ms
DISP ENDP
;------------------------------------------------------
;--------------;延时1ms---------------
DELAY2  PROC
        MOV       AH,86H
        MOV       CX,WORD PTR TIME2+2
        MOV       DX,WORD PTR TIME2
        INT       15H
        RET
DELAY2  ENDP
;-------------------------------------
CSEG	ENDS
	END	STARTUP

⌨️ 快捷键说明

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