社区
软件水平考试
帖子详情
casl中LEA指令与LD指令的区别
huijiahao
2003-10-10 09:38:43
LEA GR0,1,GR1 LD GRO,1,GR1的作用不是相同的吗,都是把GR1中的内容加1送往GRO,请问各位大侠,LEA指令与LD指令有何不同
...全文
214
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汇编语言是
中
国计算机软件专业技术资格和水平考试高级程序员级的必考内容。
CANape软件编程语言
CAS
L 语法手册
此文档安装CANape后自动存在于电脑
中
。
CAS
L汇编器的设计与实现
CAS
L汇编气的设计与实现,相关描述,基本概念,性质,描述了整个汇编过程,步骤
cas
l汇编语言模拟器
《
CAS
L汇编模拟系统》说明 本软件是为在x86系列微机和32位Windows操作系统环境
中
模拟运行Comet计算机(一种虚拟计算机)上的汇编语言
CAS
L而编写的。
CAS
L汇编语言简洁实用,属于RISC
指令
系统——精简
指令
系统计算机(x86系列微机属于CISC——复杂
指令
系统计算机),是当今许多大学教授《汇编语言程序设计》的首选语言之一。但《汇编语言程序设计》课程的实践性很强,因此本软件是《
CAS
L汇编语言程序设计》教学必不可少的软件。
软件水平考试
2,959
社区成员
22,569
社区内容
发帖
与我相关
我的任务
软件水平考试
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
复制链接
扫一扫
分享
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证
c4java
c4前端
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章