关于汇编语言的初级程序 希望哪位好心人能相信讲解一下每一句代表的意思。。谢谢了 分不多 全部送上

关于汇编语言的初级程序 希望哪位好心人能相信讲解一下每一句代表的意思。。谢谢了 分不多 全部送上,第1张

program segment

main proc far

assume cs:program

start: ;以上四句写给编译器看的!编译器用来忽悠系统的~自己理解一下就行了

;=========================================================================

push ds ;压入这个值难道想让压入程序的段基址建议压入这样写 push cs

sub ax,ax ;写成xor ax,ax可能更好一点!!!

push ax ;如果你真的是压入程序的段基址,这就应该是程序的偏移地址了,指向程序的第一条代码,

;就是push ds 了~~~~~~~~~

;以上代码猜测是由于你压入了两个值,而在程序末又始用了 ret指令

;这是call过程调用的返回指令,call指令压入栈的就是先压入cs,然后再压入ip,

;而ret指令就是先出ip后是cs的值然后指行所指示的代码段,在这里你压的ds值,后压入一个零

;所以我想你是想死死循环下去~~~但你压入ds的值在某些系统达不到此目地

;如果你不是死循环这三句代码又是什么意思呐

mov ch,4 ;有些代码的意思不是一眼就能看出结果的!要看目地是要结合上下文分析的!

;我们暂时不要猜测它的用意,一会在看

rotate: mov cl,4 ;这里楼上的都说了,没什么好讲的了~

rol bx,cl

mov al,bl

and al,0fh

add al,30h

cmp al,3ah

jl printit

add al,7h

printit:

mov dl,al

mov ah,2

int 21h

dec ch ;嗯,到了这里我们才知道mov ch,4的真正用意!注意这条指令执行结果影响AF、OF、PF、SF、ZF标志位

jnz rotate ;上面我们说到ZF标志位受到dec指令的影响,也就是ch的值自减一结果为零时ZF标志位为1;

;jnz的用意:如果ch的值不为零(zf = 0)就跳到标号rotate处执行它是根据zf标志位的值来判断的!

;zf书中写到零标志,很多指令会影响它的,jz/jnz就是根据它来改变程序流的!

;前面的jl指令是小于/等于时转移,受SF和OF的影响

ret ;如果不结合程序上下文来看,很难想象这句代码的真正意思,程序中没用到call指令,而又出现了这句代码

;所以我想你想写个死循环程序

;在一些系统级编程中常用到这种方式编程

main endp

program ends

end

;好了,其它没有解译的都被楼上说了说明一下你的程序有一句错"and al,ofh"你打错了!是这样的"and al,0fh"

;还有这里只是猜测你的用意你的程序在某些环境下是死循环,在DOS中却不是死循环所以我才建议压入CS的值才能达到目地

;汇编程序的分析,不是一句一句的看就能看出意思的,要上下文一起看

;我也是新手,加我271757468一起学吧!

1、设置TI=1,是人为的设置了串行发送请求完毕的中断请求标志。但是你并没有致能(es=1)串口中断。实际上你的interrupt5的处理程序也没有写,是空的。(注意这点)

2、你既然没有设置it0=1(跳变触发中断),那么就是IT0=0(低电平触发)。

3、当一个低电平来的时候,就进入你的interrupt0处理程序。并且硬件自动清标记位置。执行完毕 beer=1。

4、这个时候还有一个中断请求标志IT=1,于是产生了中断嵌套。执行完高级中断后,进入低级中断interrupt5。之后是空白。。。。

5、结果就是你描述的:蜂鸣器一直响,数码管停止显示。

不知道我这样描述,你能不能理解。呵呵

ORG 0 ;程序从ROM的0地址处存入

START: MOV R1,#00H ;将立即数0送入R1

NEXT: MOV A,R1 ;将R1中的0送入A

MOV DPTR,#TABLE ;将3FH所在地址#TABLE送入DPTR

MOVC A,@A+DPTR ;将DPTR地址加A中的立即数的和地址中的数存入A中,这样,只要改变A中的数就可以分别寻址3F,06,5B,4F

MOV P0,A ;将A中数送入P0端口,(控制P0口的LED亮或灭)

LCALL DELAY ;调用延时程序DELAY

INC R1 ;R1中的立即数加1,为使A+DPTR中的地址为下一个数所在地址,依次寻址

CJNE R1,#10,NEXT ;寄存器R1内容与立即数10不等则转移到NEXT,来寻址下一个数

LJMP START ;长跳转到START,进入下一轮循环

DELAY: MOV R5,#20 ;延时程序开始,将立即数20送入R5

D2: MOV R6,#20 ;同上

D1: MOV R7,#248 ;同上

DJNZ R7,$ ;减1不为0跳转到指令本身,

DJNZ R6,D1 ;减1不为0跳转到D1

DJNZ R5,D2 ;减1不为0跳转到D2

RET ;延时程序结束

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;开辟内存空间按顺序存入3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH (每个数占16位)

END ; 整个程序结束

虽然没有楼上动作快,但既然也做了就发上来参考吧,应该比楼上的更具体写,比如P15干嘛啊。 :)

__________________________________________________________________

整体描述:同时在P10 和 P11输出反相的占空可调的方波

占空比调整通过修改变量M 来设定,变量AS用来做内部循环量,范围0-M

P15使用闪烁的方式来显示对于M设定的占空比值的非法告警

调整占空比设定M通过int0 和P12来 进行加一和减一的设定 ,通过int1 和P12来 进行加五和减五的设定

设定的M值通过连接在P0,P2口的两个LED来显示,方式10进制单位显示

COUNT EQU 30H //没用的变量

AS EQU 30H //timer1内占空比计数

M EQU 35H //占空比计数上限设定

ORG 0000H

LJMP START

ORG 0003H //int0中断服务入口 占空比1步进

LJMP INT00

ORG 0013H //int1中断服务入口 占空比5步进

LJMP INT11

START: SETB EX0 //初始化开始

SETB PX0

SETB IT0

SETB EX1

CLR PX1

SETB IT1

SETB EA

CLR P15 //P15显示设定占空比数字非法时闪烁告警

MOV TMOD,#21H //使用timer0 模式1和timer1 模式2

MOV TH1,#38H //timer1做占空部分控制,即高低电平时间控制

MOV TH0,#0B1H //timer0做方波周期

MOV TL0,#0E0H

SETB TR0

SETB TR1

MOV DPTR,#TABLE //LED段码地址

MOV M,#50 //占空比上限初值

MOV P0,#3FH //占空比10进低位 LED段码

MOV P2,#6DH //占空比10进高位 LED段码

MOV AS,#0 //占空比计数变量

TOP:SETB TR1 //新的一个方波周期从这里开始

SETB P10 //P10和P11分别输出反相的等周期方波

CLR P11 //

MOV TH0,#0B1H //timer0计数值、即方波周期值设定

MOV TL0,#0E0H

MOV AS,#0 //高电平时间计数变量初值每个timer1溢出加一(最大等于M)

MOV B,#10 //没用

MOV A,M

MOV B,#100

DIV AB

JZ TIME1 //如果设定的M值在01-99(可以理解为可接受的值,占空比最少1:99最多99:1)

MOV B,#10

CLERK:SETB P15 //设定的占空比值非法,则闪烁P15告警

LCALL DELAY

CLR P15

LCALL DELAY

SETB P15

LCALL DELAY

CLR P15

MOV M,#50 //自动重新设定默认占空比

LCALL SHOW //LED显示M,即当前设定占空比的值

LJMP TOP //重新 开始新懂得方波周期

TIME1:JBC TF1,NEXT //等待timer1 溢出标志

SJMP TIME1

NEXT:INC AS //每次溢出变量AS加一,

MOV A,M

CJNE A,AS,TIME1 //直到AS=M ,即占空计数达到,

CLR P10 //波形反相

SETB P11

CLR TR1 //关闭timer1,波形在timer0控制的一个周期内不再变化

TIME0:JBC TF0,TOP

SJMP TIME0 //timer0溢出,开始下一个周期波形

INT00:JNB P12,LOOP1 //外部中断0中断处理

INC M //当int0 为低电平且P12为高则M增加1,每次机器响应int0都加一,直到int0消失

LCALL SHOW //LED显示M,即当前设定占空比的值

RETI

LOOP1:DEC M //当int0 为低电平且P12为低则M减1,每次机器响应int0都减一,直到int0消失

LCALL SHOW //LED显示M

RETI

INT11:JNB P12,LOOP //外部中断1中断处理

MOV A,M

ADD A,#5 //当int1 为低电平且P12为高则M增加5,每次机器响应int0都加五,直到int0消失

MOV M,A

LCALL SHOW //LED显示M

RETI

LOOP:MOV A,M

SUBB A,#5 //当int1 为低电平且P12为高则M减少5,每次机器响应int0都减五,直到int0消失

MOV M,A

LCALL SHOW //LED显示M

RETI

SHOW:MOV A,M //M /10 AB 内分别是商和余数

MOV B,#10

DIV AB

MOVC A,@A+DPTR //查表显示余数

MOV P2,A

MOV A,B

MOVC A,@A+DPTR //查表显示商

MOV P0,A

MOV B,#10 //没用

RET

DELAY:MOV R6,#0FFH //延时函数

DEY1:MOV R7,#0FFH

DEY2:MOV R5,#3

DJNZ R5,$

DJNZ R7,DEY2

DJNZ R6,DEY1

RET //延时结束

TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH //LED段码表

END

水温控制系统完整程序原理图实验步骤

ORG 0000H

LJMP MAIN1;;跳转到MAIN1,程序入口

ORG 0003H

LJMP ZINT0;;跳转到ZINT0,中断INT0入口

ORG 0013H

LJMP ZINT1;;跳转到ZINT1,中断INT1入口

TMPL EQU 29H;;定义TMPL,存于29H

TMPH EQU 28H;;定义TMPH,存于28H

FLAG1 EQU 38H;;定义FLAG1,存于38H

DATAIN BIT P37;;定义DATAIN指向P37口

MAIN1: SETB IT0;;INT0为下降沿触发.

SETB EA;;总中断打开

SETB EX0;;INT0中断打开

SETB IT1;;INT1为下降沿触发.

SETB EX1;;INT1中断打开

SETB P36;;P36置1

SETB P32;;P32置1

//74H~77H清0

MOV 74H,#0

MOV 75H,#0

MOV 76H,#9

MOV 77H,#0

MAIN: LCALL GET_TEMPER;;调用GET_TEMPER子函数

LCALL CVTTMP;;调用CVTTMP子函数

LCALL DISP1;;调用DISP1子函数

AJMP MAIN ;;跳转到MAIN,使之形成一个循环

RET

INT0/1为1下降沿触发 为0电平触发 ,而下降沿触发IE0和IE1可以自动清零,而电平触发得人为把IE0和IE1清零,要不然会一直启动中断。IE0/1可以自动清零,所以一般用下降沿触发

汇编:[huì biān]:汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替 *** 作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。

汇编的调试环境总的来说比较少,也很少有非常好的编译器。reallychenchi设计的轻松汇编是一款非常适合初学者的汇编编译器。轻松汇编是一个汇编语言集成开发环境,主要面向汇编语言初学者,也可以用它进行开发。除了普通的编辑功能以外,它还可以自动整理格式、高亮显示和编译、链接、调试汇编程序,非常方便实用。

常用命令:

一 通用数据传送指令

二 累加器专用传送指令

三 有效地址送寄存器指令

四 标志寄存器传送指令

以上就是关于帮忙解释一下汇编语言代码!全部的内容,包括:帮忙解释一下汇编语言代码!、51单片机问题,想问一下IT0=1和TI=1有什么区别,尽量解释清楚一些,谢谢!!!、关于汇编语言的初级程序 希望哪位好心人能相信讲解一下每一句代表的意思。。谢谢了 分不多 全部送上等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/8826027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存