SA突袭 发表于 2015-5-21 22:16:04

关于用mov指令赋值(王爽汇编第二版)

我在做程序6.1时
assume cs:abc
abc segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start:mov ax,0
mov bx,cs//把这一个和下面那一行改成mov ds,cs怎么就不行了
mov ds,bx
mov bx,0
mov cx,8
s: add ax,
add bx,2
loop s
mov ax,4c00h
int 21h
abc ends
end start



零度非安全 发表于 2015-5-21 22:26:43

搂住你好,对于你的问题我的解释如下:

首先cs和ds是两个用来专门用来存放段地址的寄存器,cs是用来存放代码段的段地址,ds是用来存放数据段的段地址
在之前你必须明白一点就是段地址中的地址数据不能直接的mov ds,cs的


必须通过通用寄存器来存放一方中的(比如上面说的ds和cs)段地址的地址数据,然后再把这个通用寄存器中的值去赋值于另外的段寄存器中来实现两个段寄存器中的数据传递

烟散花落 发表于 2015-5-21 22:45:54

楼上说的很详细了   简单点就是汇编语言中段寄存器不能相互交换数据
可以参照这张图

逆战时代 发表于 2015-5-22 09:36:52

看看。。。。。。

glider 发表于 2015-5-23 08:43:23

3#是好图,就是看的时候,歪着脑袋总感觉是在卖萌~

SA突袭 发表于 2015-5-27 11:05:32

烟散花落 发表于 2015-5-21 22:45
楼上说的很详细了   简单点就是汇编语言中段寄存器不能相互交换数据
可以参照这张图

这个图,不错,哪里找的

SA突袭 发表于 2015-5-27 11:06:11

零度非安全 发表于 2015-5-21 22:26
搂住你好,对于你的问题我的解释如下:

首先cs和ds是两个用来专门用来存放段地址的寄存器,cs是用来存放 ...

谢谢回答,呵呵

llfyer 发表于 2015-5-27 11:32:18

这样很爽
push cs
pop ds

逆战时代 发表于 2015-5-27 19:27:56

晕了、、、、、、、

SA突袭 发表于 2015-6-6 20:42:35

逆战时代 发表于 2015-5-27 19:27
晕了、、、、、、、

呵呵,努力把
页: [1]
查看完整版本: 关于用mov指令赋值(王爽汇编第二版)