汇编语言assume cs:code,ds:datarea 中的:
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 18:42:41
xSRP~.ۙL{0T'Kcel -"VlBen=hMr~ߞvoKѨ{7+f3V6Ԝj+Z))DJz}gKۙT _A&$1+"wӒg,a|Fo|=6hXp90p)/Q{YHǓlX{&;/I[*)]ĶUڤKf0 ICjFֲ_-鏽جE}rs8eVֲϙ_%c8lx
";:7<0\y5ۢDiի˩ͭt_.?/Ջ]64lgnhQ`D.6vxo@0@ۭ(6|;LG~w0I]wu|
KzXh }Wq.m*Y7?
؝L\Q5|N*ST՞$D.2Ad=j9=x/Kڶ*OY^
汇编语言assume cs:code,ds:datarea 中的:
汇编语言assume cs:code,ds:datarea 中的:
汇编语言assume cs:code,ds:datarea 中的:
在汇编时其实内部只有偏移地址寻址,而没有变量名寻址.所以汇编时汇编软件会把你写的变量换成偏移地址.而变量是在你假定的段里查找得到偏移地址.一般指令程序放在代码段中,段地址来源于代码段寄存器CS,涉及到一个堆栈操作时,段寄存器为SS,涉及到一个操作数时,段寄存器为DS或者ES.assume cs:code,ds:datarea就是说明相应的操作所在段寄存器.当DS(ES)不指在assume的指明的段中也可以运行,只是会得到另一个段的相应偏移地址处的内容.例如:
assume ds:段名1 mov ds,段2 mov ax,段1中的第二个变量.最终结果ax保存的是段2中的对应与段1中第二个变量相同地方的东西(注意是db,dw.编译器是在段1中查找变量名,并把变量转换为偏移地址,但访问时使用ds:偏移地址 这时ds保存的是段2的段地址,所以访问到的是第二个段对应偏移地址的内容.