网上有关“反汇编代码如何看懂”话题很是火热,小编也是针对反汇编代码如何看懂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
建议你先学一下微机原理这门课程,汇编语言需要对CPU的指令系统有较深的理解,AX,BX,CX,DX是一组指令寄存器,至于INC,OR,CMP这些都是运算符。如OR是或运算,CMP是比较运算,POP是出栈,PUSH压栈。。。慢慢研究吧!
微机原理,16位二进制补码数放在ax寄存器中,or ax,ax是判断数的符号,为什么呢?
8255地址信息为0378H---037BH,
A B C这三个端口均工作方式0,
A口作为输入口,输入转换后的结果;
B口输出,用来输出通道地址,发出第之所存信号和启动转换信号;
C口低4位为输入口,用来读取转换状态,高4位没有使用。
INIT_8255 PROC NEAR
MOV DX, 037BH ;控制口地址
MOV AL, 91H ;控制字:A B C口均工作方式0,A输入,B输出,C低4位输入
OUT DX, AL ;写入8255
RET
INIT_8255 ENDP
数据采集:
START:
MOV AX, SEG DATA
MOV DS, AX ;设置数据段地址
MOV SI, OFFSET DATA ;设置数据存储首地址
CALL INIT_8255 ;初始化8255
MOV BL, 0 ;AD转换通道号
MOV CX, 8 ;预计循环八次
AGAIN:
MOV AL, BL ;通道号
MOV DX, 0379H ;B口地址
OUT DX, AL ;输出通道号
OR AL, 10H ;D4置一
OUT DX, AL ;输出
AND AL, 0EFH ;D4清零
OUT DX, AL ;输出
;上面四行,发出地址锁存信号和启动转换信号
NOP ;稍等
MOV DX, 037AH ;C口地址
WAIT1:
IN AL, BL ;--有错!改正如下
IN AL, DX ;从C口输入,这是状态
AND AL, 02H ;取出D3
JZ WAIT1 ;为零就是没有转换完,转移,继续读状态
MOV DX, 0379H ;为一,就?
MOV AL, BL ;这三行,看不懂
OR AL, 20H
OUT DX, AL
MOV DX, 0378H ;A口地址
IN AL, DX ;读入转换出来的数据
MOV [SI], AL ;存放
INC SI ;存放的地址加一
INC BL ;通道号码加一
LOOP AGAIN ;循环八次
MOV DX, 0379H ;B口地址
MOV AL, 0
OUT DX, AL ;向B口输出0,大概是关闭转换器
HLT ;停机
执行 OR AX, AX 的结果, 标志寄存器PSW的符号标志位SF 受AX初值最高位影响,
若AX 初值最高位为1,执行OR AX, AX 后,SF =1 (NG 负数标志);
若AX初值最高位为0, 执行OR AX, AX 后,SF =0 (PL正数标志)。
关于“反汇编代码如何看懂”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
评论列表(3条)
我是折叠号的签约作者“抬眉见雪”
本文概览:网上有关“反汇编代码如何看懂”话题很是火热,小编也是针对反汇编代码如何看懂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。建议你先学一下...
文章不错《反汇编代码如何看懂》内容很有帮助