新手学汇编,有一点地方明白,请知道的大哥大姐指点,小子这厢谢谢了

2025-01-04 09:31:34
推荐回答(3个)
回答1:

楼主的注释,都对。
最后,是进行了数据交换。

mov ax,cs //问题一,CS是代码段寄存器,难道这条是将CS的段地址传给AX 吗?
mov ds,ax //问题二 ,DS是数据段寄存器,这里是要设置CS的地址给DS使用吗?

这两行,是令 DS = CS,即把数据段和代码段,设置为同一个位置。

回答2:

你的理解基本正确。这段代码像是王爽汇编里的吧?
这段代码其实就是想告诉我们, 内存中的数据既可以被当作指令来执行,也可以被当作操作的数据。

mov ax,1000 //
mov ss,ax //
mov sp,02 //
mov ax,cs //CS里存放的是当前指令所在的段地址,把这个段地址传给ax
mov ds,ax //将当前指令所在的段地址再传给DX

// 下面这些操作的对象,实际上是上面的指令对应的数据。
mov ax,[0] //将DS偏移为0的地址对应的内容传给了AX
add ax,[2] //将DS偏移为2的内存单元内容与偏移为0对应内容相加
mov bx,[4] //将DS偏移为4的内存单元的内容传入BX
add bx,[6] //将DS段偏移4的内容和偏移6的内容相加

push ax //
push bx //

pop ax //
pop bx //

回答3:

栈是 先进后出 或者 后进先出 然后你自己在去 看看你代码