汇编高手请进,急!(

来源:百度知道 编辑:UC知道 时间:2024/09/25 03:20:53
小弟正在做毕设·可是对汇编语言实在不精通
这下面有要求 麻烦改动一下
原要求:本程序中A/D转换器共采集100个数据,采集结果放在数据缓冲区DBUFF中.为了减少干扰信号对采样值的影响,提高采样数据的可靠性,对采样值进行了数字滤波。本程序中采用消除脉冲干扰的平均滤波法,对每个数据都采样9次,然后去掉最大值和最小值,剩下的7个取平均值。
(老师说不能照搬 所以麻烦高手帮忙 按照原要求的格式改动一下 比如100个数据改为80个)
原程序如下:
DSEG SEGMENT 是这个段的基址,也就是这个段的首地址
SBUFF DW 9 DUP(?)
DBUFF DW 100 DUP(?)
COUNT DW 100
PORT_ D DW 378H
PORT_ S DW 379H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
ASSUME ES:DSEG
MAIN PROC FAR; 主程序
START:PUSH DS
SUB AX ,AX
PUSH AX
MOV AX ,DSEG
MOV DS,AX
MOV ES,AX
MOV DI,OFFSET DBUFF; 存结果区
AGN1:M0V SI,OFFSET SBUFF; SI采集区
MOV CX ,9
AGN2:MOV DX,PORT—D
MOV AL,0FH; 启动转换
0UT DX ,AL
N0P
NOP
MOV AL,1FH; 结束启动
OUT DX,AL
NOP
NOP
MOV AL,17H
OUT DX,AL; 发读状态命令
XCHG DX,

;1.注释;应为英文状态的;
;2.程序中的,应为英文状态的,
;3.细节问题PORT_D不是PORT-D
;4.若改为80个数据只在数据段改就是了
;5.其它的好像改不了多少,不止是汇编还有接口呢
DSEG SEGMENT ;是这个段的基址,也就是这个段的首地址
SBUFF DW 9 DUP(?)
DBUFF DW 80 DUP(?)
COUNT DW 80
PORT_D DW 378H
PORT_S DW 379H
DSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
ASSUME ES:DSEG
MAIN PROC FAR; 主程序
START:
PUSH DS
SUB AX ,AX
PUSH AX
MOV AX ,DSEG
MOV DS,AX
MOV ES,AX
MOV DI,OFFSET DBUFF;存结果区
AGN1:
M0V SI,OFFSET SBUFF;SI采集区
MOV CX,9
AGN2:
MOV DX,PORT_D
MOV AL,0FH; 启动转换
0UT DX,AL
N0P
NOP
MOV AL,1FH; 结束启动
OUT DX,AL
NOP
NOP
MOV AL,17H
OUT DX,AL; 发读状态命令
XCHG DX,PORT_S; DX变为379H
AGN3:
IN AL,DX; 读状态
TEST AL,8OH; 测试状态 图4.2 程序流程图
JNZ AGN3;忙,循环
XCHG DX,PORT_D
MOV AL,1DH
OUT DX,AL
XCHG DX,PORT_S