社区
软件水平考试
帖子详情
casl中LEA指令与LD指令的区别
huijiahao
2003-10-10 09:38:43
LEA GR0,1,GR1 LD GRO,1,GR1的作用不是相同的吗,都是把GR1中的内容加1送往GRO,请问各位大侠,LEA指令与LD指令有何不同
...全文
208
16
打赏
收藏
casl中LEA指令与LD指令的区别
LEA GR0,1,GR1 LD GRO,1,GR1的作用不是相同的吗,都是把GR1中的内容加1送往GRO,请问各位大侠,LEA指令与LD指令有何不同
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
慕容霜雪
2003-10-10
打赏
举报
回复
lea 可以有好多操作。可以传有效地址。可以实现自加自减。
ld 只能实现内容装载。没有别的用处。
lea gr1,0,gr1
ld gr1,0,gr1
要看gr1里是什么东西。如果地址的话那
lea
ld
就不一样。如果是数据。二者在内容上是没有区别的。但在背后操作上是有区别的。正如飞狼说的那样
warren248
2003-10-10
打赏
举报
回复
我是这样理解的:lea 一般直接取地址,ld一般是取内容(地址的值)。且lea会修改fr的值。
wwwsoftware
2003-10-10
打赏
举报
回复
非狼提到的执行LEA后 同时修改标志位(FR的值)很重要,
经常可以看到先执行LD语句,再执行LEA的,就是为了影
响标志位。很多时候利用这一特点,用LEA来修改循环变
量,然后进行判断后执行JPZ,JNE,JMI等跳转指令。
戒之在得
2003-10-10
打赏
举报
回复
清华的书我没看过,应该是书写的标准语法吧,在标准中lea是三位操作符吧?(有些记不清了)
RPhx
2003-10-10
打赏
举报
回复
push adr [grx];
功能:E=adr+(GRX);-1=》GR4;E=>((GR4))
如:(GR4)=200,(GR1)=300
PUSH 10,GR1
执行后:
(GR4)=199;
(199)=310;
wwwsoftware
2003-10-10
打赏
举报
回复
回复znwang3(牛牛) 的问题
(1)你前面对LEA及LD的用法描述是对的
(2)原文:
清华出的那本教程同步辅导,第467面上面有三行(GR1与GR2的内容互换):
LEA GR3, 0, GR2 ;(GR2) -> GR3
LEA GR2, 0, GR1 ;(GR1) -> GR2
LEA GR1, 0, GR3 ;(GR3) -> GR1, 即(GR2) -> GR1
中间为什么要加个 “0”呀,把0去掉不行吗?
回复:LEA的语法是 LEA GR,ADR[,(XR)] ,可以看出,必须输入ADR值,此时
又不想变换所获得的值,所以必须设置ADR为0,否则语法出错。
(3)原文:
书的第474面,有两个进栈操作:
PUSH 0, GR1
PUSH 0, GR2
这里的“0”又是用来做什么的。
回复:道理同上,PUSH的语法是PUSH GR,ADR[,(XR)] ,必须输入ADR值。当ADR为0时,
可以起到把GR1或GR2的内容压入堆栈。如ADR不为0,压入堆栈的就不会是GR1或GR2的内容了。
janswl
2003-10-10
打赏
举报
回复
LD GRI,adr[,GRK]
(adr + (GRK)) -> GRI
将所指内存的内容装入到寄存器中
LEA GRI,adr[,GRK]
adr + (GRK) -> GRI
将有效地址装入寄存器中并产生标志位(FR的值)
戒之在得
2003-10-10
打赏
举报
回复
是我写错了,呵呵,ld是把地址gr1加1中的数值赋给gr0
envoyofdis
2003-10-10
打赏
举报
回复
不对,
我觉得是
lea是把 gr1的值加1直接赋值给gr0,ld是把gr1指向地址的下一个地址中的数值赋给gr0
wwwsoftware
2003-10-10
打赏
举报
回复
修改一下,刚才把“则执行 LEA GR0,1,GR1后,GR0的值为1001H”输成
“则执行 LEA GR0,1,GR1后,GR1的值为1001H”
LEA GRO,1,GR1 是把 GR1中的值加1直接赋值给GR0,可以实现数值自加自减等功能;
如开始时间GR1的取值为1000H,则执行 LEA GR0,1,GR1后,GR0的值为1001H;
LD GRO,1,GR1 是把 GR1中的值加1作为地址,再把该地址中的值赋给GRO。一般开始
时GR1是指向某个需要进行处理的数据区的首地址,通过加1后实现下一个地址
的取值。如开始时GR1中的值为1000H,则执行 LD GR0,1,GR1后,GR0的值为
地址1001H中的值,而不是1001H。
wwwsoftware
2003-10-10
打赏
举报
回复
LEA GRO,1,GR1 是把 GR1中的值加1直接赋值给GR0,可以实现数值自加自减等功能;
如开始时间GR1的取值为1000H,则执行 LEA GRO,1,GR1后,GR1的值为1001H;
LD GRO,1,GR1 是把 GR1中的值加1作为地址,再把该地址中的值赋给GRO。一般开始
时GR1是指向某个需要进行处理的数据区的首地址,通过加1后实现下一个地址
的取值。如开始时GR1中的值为1000H,则执行 LD GR0,1,GR1后,GR0的值为
地址1001H中的值,而不是1001H。
znwang3
2003-10-10
打赏
举报
回复
再问:
LEA GR0, 1, GR1 ; 是不是:1+(GR1)->GR0 ,我想是的
但是:
LD GR0, 1, GR1 ;是 1+(GR1)->GR0 , 还是 ( 1+(GR1))->GR0 呢?应该是后者!
清华出的那本教程同步辅导,第467面上面有三行(GR1与GR2的内容互换):
LEA GR3, 0, GR2 ;(GR2) -> GR3
LEA GR2, 0, GR1 ;(GR1) -> GR2
LEA GR1, 0, GR3 ;(GR3) -> GR1, 即(GR2) -> GR1
中间为什么要加个 “0”呀,把0去掉不行吗?
书的第474面,有两个进栈操作:
PUSH 0, GR1
PUSH 0, GR2
这里的“0”又是用来做什么的。
znwang3
2003-10-10
打赏
举报
回复
我也不太懂,期待高手作答!
戒之在得
2003-10-10
打赏
举报
回复
不对,lea是把 gr1的值加1直接赋值给gr0,ld是把地址gr1中的数值加1赋给gr0
yhcyzc
2003-10-10
打赏
举报
回复
LEA 操作的寄存器中的内容
LD 操作的是内存单元的内容!! [1+(GR1)]->GR0
znwang3
2003-10-10
打赏
举报
回复
看了各位的讲解,真是既简单明了有很直观,真心谢谢各位!
cas
l 汇编器和
cas
l虚拟机
CAS
L(可能代表一种特定的计算机抽象组装语言)汇编器和
CAS
L虚拟机是用于理解和执行基于
CAS
L
指令
集的程序的工具。在软件开发领域,汇编器是一种编程工具,它将人类可读的汇编语言代码转换成机器可执行的二进制代码。...
CAS
L汇编语言程序设计
CAS
L汇编语言程序设计是计算机科学领域
中
的一个重要分支,主要针对的是计算机底层操作和硬件交互。
CAS
L,全称为Chinese Assembly System Language,是专为
中
国计算机软件专业技术资格和水平考试高级程序员级设计的一...
CAS
L汇编器的设计与实现
###
CAS
L汇编器的设计与实现 #### 一、引言 随着计算机技术的发展,学习计算机底层原理变得越来越重要。汇编语言作为连接高级语言与机器语言的重要桥梁,在计算机科学教育
中
占据着不可或缺的地位。然而,传统的...
CANape软件编程语言
CAS
L 语法手册
在
CAS
L
中
,大小写是有
区别
的,因此在编写代码时需要注意大小写的规范。 2.6.5 Predefined Function Groups and Code Blocks of CANape: CANape提供了预定义的函数组和代码块,方便用户快速调用和构建脚本。 2.7 ...
cas
l汇编语言模拟器
CAS
L汇编语言简洁实用,属于RISC
指令
系统——精简
指令
系统计算机(x86系列微机属于CISC——复杂
指令
系统计算机),是当今许多大学教授《汇编语言程序设计》的首选语言之一。但《汇编语言程序设计》课程的实践性很强...
软件水平考试
2,959
社区成员
22,569
社区内容
发帖
与我相关
我的任务
软件水平考试
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
复制链接
扫一扫
分享
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证
c4java
c4前端
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章