初学者的两个问题,叩请赐教!!

贺照云 2003-10-15 11:31:34
我在自考,正学习经济科学出版社的<<汇编语言程序设计>>,这本指定的教材实在是不敢恭维,给我带来了很大的麻烦:

问题1:在代码里,经常用到段的装填如:
stack_seg segment
sbuf db 100 dup (0)
stack_seg ends

data_seg segment
val db 1, 2, 3, 4
data_seg ends

code_seg segment
assume cs:code_seg, ds:data_seg, ss:stack_seg
start:
mov ax, data_seg ;这里为什么不能直接用mov ds, data_seg
mov ds, ax
...
...
code_seg ends
end start

这里的数据段是否必须装填?代码段和堆栈段为什么不装填?

问题2:下边有两组寻址的例子?第一级是正确的,第二级是错误的?有什么标准判断?

第一组(正确的,书上这么说的,但没有原因):
mov ax, [bp]
mov ax, [bx + 7]
mov ax, [7 + bp]
mov ax, [si - 100h]
mov ax, [di + bp]
mov ax, [bx + si]
mov ax, [si + offset val]

第二组(错误的,书上这么说的,但没有原因):
mov ax, [bx * 7]
mov ax, [bx + bp]
mov ax, [bp - si]
mov ax, [3 - bx]
...全文
26 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫郢剑侠 2003-10-15
  • 打赏
  • 举报
回复
问题1:数据段是否必须装填?
这要具体情况具体分析.

mov ax, data_seg ;这里为什么不能直接用mov ds, data_seg

这是规定的.要问就问INTEL罢.

问题2:关键是理解各寄存器的使用限制及寻址方式.
写个程序把几种寻址方式都用一下, 就明白了.

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧