- [游客] 说的不错,但是现在国人能有多少个学习这个的时候还能有开拓视野的想法。。。 04/08 09:13
- [scuzg] 0fch展开成二进制数: 11111100,其中最高位是符号位,所以: 7ch+4=80h=12 12/20 19:05
- [842460904] 理论是应该负数原码和补码数值之和等于128,可为什么。fc和它的补码-4相加,即252+(-4)=? 09/03 23:38
- [fpamc] 顶顶…… 05/25 09:49
- [scuzg] 20位,图中有说明。 12/29 15:45
- [scuzg] 表示8位二进制数的16进制数fdh,因高位是f,所以前面前缀0以区别于标识符,也就是说,当对应8位二 12/29 15:42
- [powerofthinking] 博主的文章不错,希望再多写几篇。 12/18 13:40
- [游客] 请问0fdh为什么不是0000 1111 1101 b ?如果最高位视为符号位,它就是一个带符号数, 12/17 23:08
- [游客] 请问scuzg老师,地址加法器是多少位的啊(物理连接结构)?寄存器是16位,地址线20位,地址加法器 12/17 23:02
- [游客] 地址译码逻辑是不是应该在CPU内部啊? 我也觉得文章有点问题,还有就是看了scuzg老师很多文章, 12/17 22:59
- [qqqun238564439] 厉害 04/10 10:57
- [suixin] 少了个你,呵呵 “看着你的回答真长见识” 12/01 09:31
- [suixin] 看着的回答真长见识 12/01 09:29
- [fangorc] 先弄个友情链接,老师这的好东西太多了,慢慢消化~ 08/07 22:03
- [zdpopup] 谢谢scuzg 的宝贵意见,我看了2次你的话 08/05 01:43
- [游客] 过来踩踩。哈哈!端他爸 08/03 11:28
[2009-07-30 14:56] 汇编语言的常量、变量及其与寻址方式的关系
假设常量、变量的定义及引用语句如下:
;数据段常量和变量定义语句
fctr equ 1218h
x db 1
y db 2
;代码段常量和变量引用语句
mov ax,fctr
mov bl,x
add bl,y
对应的反汇编代码如是:
;数据段目标代码
1475:0000 01 02
;代码段目标代码
1476:0005 B81812 MOV AX,1218
1476:0008 8A1E0000 MOV BL,[0000]
1476:000C 021E0100 ADD BL,[0001]
源程序和目标代码作对比分析如下:
①从数据段目标代码可见,内容为 01 和 02 的单元是编译程序为变量 x 和 y 分配的字节单元,而常量定义语句:
fctr equ 1218h
在目标代码中似乎完全不留痕迹,不过在代码段常量引用语句中,fctr 被 1218H 替换,所以:
编译程序将常量定义语句中符号常量的定义值,以立即数方式替换源代码中所有引用位置的符号常量;常量定义伪指令不为符号常量在数据段分配存储空间。
②如上所述,变量定义语句:
x db 1
y db 2
为变量 x 和 y 各分配了一个字节并分别赋予 1 和 2 的初值,不过我们在目标代码的数据段中看不到变量定义语句中符号地址 x 和 y 的踪迹,而发现在代码段的两条变量引用语句的 x 和 y 被分别替换成了[0000]和[0001]。我们很容易判断,这正是变量 x 和 y 在数据段的偏移量,所以:
编译程序为各变量分配存储单元,并将根据各变量排列顺序和占用的字节数自动确定的各变量的偏移量,以直接寻址方式替换引用位置的符号变量。
经过上述分析,我们可以得出结论:常量和立即数寻址方式相对应,常量值跟随指令代码存储在代码段中,不能按变量方式对其进行改写;而变量被编译成直接寻址方式的偏移量,指向内容可改写的数据段的某单元——这就是汇编语言常量和变量的内在机理。
除了立即数寻址方式和直接寻址方式分别对应汇编语言的常量和变量外,其他寻址方式和常量及变量又是什么关系呢?寄存器寻址方式和I/O 寻址方式分别是 CPU 内部和 I/O 接口的寻址方式,和内存无关,所以和常量、变量也没有关系;和存储器相关的寻址方式还有“寄存器间接寻址”及多种扩展形式,它们是以“准指针”方式访问变量的,对照 C 语言的变量和指针的关系很容易理解。
[ 游客 发表于 2009-08-03 14:05 ]
楼主你发现没有,你的文章如果涉及具体的技术知识就很少有人回复,绝大多数都是在灌水。
这个网站也越来越没意思
[ scuzg 发表于 2009-08-03 15:17 ]
回复楼上游客:
先谢谢你的意见。
我不知道是不是我谈及的问题没有表述清楚或问题本身没有什么价值?或者是不是因为现在是假期?另一个可能的原因是本网站的讨论基本上是围绕王爽老师的教材为主线的,所以可能对一些有点“旁门左道”的内容不是特别感兴趣。
我到这里来有发表一点东西是希望有个地方能够整理我一些心得,当然正如我所说的,也期望我的一些看法在这个专门讨论汇编语言教学的网站得到印证或纠正,以便下学期在我那里上汇编语言课的同学能来看看我的意见和这个网站的其他内容,希望多一个帮助他们学习的渠道。
我不认为学习汇编语言对学习计算机是必要的,但从汇编开始是一个比较好的选择,特别对计算机专业的同学来说更是如此。那么什么是起点呢?起点就是让我们有更好的初速度冲出去! 简而言之就是:在学得踏实的基础上,尽快离开汇编————IT新人的成长之路还很长。
你是一位很有心的朋友,我再次谢谢你的关注,也希望有机会和你联络和探讨。
[ 游客 发表于 2009-08-06 10:15 ]
支持博主,鄙视煞有介事的人!!!
[ 游客 发表于 2009-08-06 14:23 ]
我认为,我们学习技术知识固然是一个重要,而我们同样要关注自己的思想和思维。
做事不能没技术,但更不能只有技术。
这里的学习方式与其他网站很不相同,如果还是定位于“问-答”的与csdn相同的模式,这个网站就没有意义了吧。
[ scuzg 发表于 2009-08-07 13:01 ]
我不知道楼上游客和一楼游客是不是一个人,感觉观点有点接近,当然这并不是最重要的。
论坛是一个言论开放的平台,除需要遵守“发帖须知”上很少的限制条款外,任何人都可以在这里畅所欲言地表述自己的观点或和意见不同的朋友商榷。基于这一点,我个人认为网站有没有意思或意义,更取决于广大博主的积极参与,使论坛积累一些高质量的博文,为初学者入门提供更有效的帮助,有一批又一批的IT新人从这里起步。
我认为这个以王爽老师个人的名气和教材的美誉度为基本影响力的讨论汇编语言的专业网站,具备实现上述想法的扎实基础;尽管论坛或汇编网管理者搞这个网站的目标没有我上面说得那么简单或具体,但不妨碍我按我的想法继续搞下去,这不正是这个网站的意义和意思么?
我到这个网站的时间也不长,可能有些情况不如游客清楚,所以还是非常感谢你的意见和帮助。