鱼C论坛

 找回密码
 立即注册
查看: 3024|回复: 2

麻烦大家给解释一下

[复制链接]
发表于 2016-11-20 23:33:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 来学习编程 于 2016-11-20 23:38 编辑

(6) 程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储到b段中。
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start:
mov ax,a
mov ds,ax
mov bx,0
mov ax,b
mov ss,ax
mov sp,16
mov cx,8
s:
push [bx]
inc bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
请问assume后面没有假设a段,b段,为什么在程序里面可以直接使用。跟assume cs:code,ds:data,ss:stack这种有什么不同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-21 16:46:35 | 显示全部楼层
同等大神出现!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-21 17:44:01 | 显示全部楼层
本帖最后由 代码农民 于 2016-11-21 17:48 编辑

assume是伪指令,是写给编译器看的,目的是寻找偏移量所对应的段。

假设a分为两段,每段用一个变量单元来表示:
a segment

a1 dw 1,2,3,4,5,6,7,8,9
a2 dw 0ah,0bh,0ch,0dh,0eh,0fh,0ffh

a ends
“assume ds:a”之后a1,a2就是ds段的两个偏移地址了,编译器在计算a1和a2偏移地址的时候就往a段里找了。
你先这样简单地理解一下,等你学得越多,看的越多就明白了,因为这里面涉及到储存器变量的内容,一言难尽。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 16:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表