看王爽-汇编语言问题。

时间:2021-12-25 01:16:37

assume cs:code

a segment
db 1,2,3,4,5,6,7,8
a ends

b segment
db 1,2,3,4,5,6,7,8
b ends

c segment
db 0,0,0,0,0,0,0,0
c ends

code segment

start: mov ax,a
mov ds,ax
mov ax,c
mov ss,ax
mov sp,11h
mov ax,b
mov es,ax
mov cx,8h
mov bx,0
     s: mov ax,ds:[bx]
add ax,es:[bx]
push ax
add bx,2
loop s

mov ax,4c00h
int 21h

code ends

end start

我用DEBUG运行 发现DS刚开始是等于0BA0,按理说CS不是应该加256字节等于OBB0吗?可实际他等于0BB3,哪位大哥告诉我为什么。可能我哪个知识忘了。

7 个解决方案

#1


DS是 0BA0,程序的起始就应该在0BB0,这个没错。
但是你程序的开头,不是CS,而是
a segment
    db 1,2,3,4,5,6,7,8
a ends

b segment
    db 1,2,3,4,5,6,7,8
b ends

c segment
    db 0,0,0,0,0,0,0,0
c ends

所以0BB0是 a segment所在的位置,
CS的位置,应该往后数
a,b,c 3个segment所占的字节

#2


我估计 segment这东西,不够16字节,是要不齐的

所以3个segment虽然都不够 16字节,但是各自占据一个字节。

你 在debug下用D命令看看,是不是这个情况

我也刚学,所以不敢说的太绝对

#3


说错了,不是各自占一个字节,是不够16字节,都补到了16字节。
各自占16字节

#4


引用 1 楼 korekara88730 的回复:
DS是 0BA0,程序的起始就应该在0BB0,这个没错。
但是你程序的开头,不是CS,而是
a segment
    db 1,2,3,4,5,6,7,8
a ends

b segment
    db 1,2,3,4,5,6,7,8
b ends

c segment
    db 0,0,0,0,0,0,0,0
c ends

所以0BB0是 a segmen……

db 1,2,3,4,5,6,7,8这里面定义的空间不算吗?8个字有32B吧。

#5


主要是地址和操作数的区别

#6


引用 2 楼 korekara88730 的回复:
我估计 segment这东西,不够16字节,是要不齐的

所以3个segment虽然都不够 16字节,但是各自占据一个字节。

你 在debug下用D命令看看,是不是这个情况

我也刚学,所以不敢说的太绝对

好的,谢谢你,我明白了。能加下QQ以后有问题想请教一下行吗?因为我都是自学的,没有人教,遇到一个问题不会要自己看书看很久。。。

#7


我平时上不了QQ,我也是自学的,也没有人教。
共同努力吧!
最近事情比较多,已经两周没怎么动了。

犯懒了,呵呵

#1


DS是 0BA0,程序的起始就应该在0BB0,这个没错。
但是你程序的开头,不是CS,而是
a segment
    db 1,2,3,4,5,6,7,8
a ends

b segment
    db 1,2,3,4,5,6,7,8
b ends

c segment
    db 0,0,0,0,0,0,0,0
c ends

所以0BB0是 a segment所在的位置,
CS的位置,应该往后数
a,b,c 3个segment所占的字节

#2


我估计 segment这东西,不够16字节,是要不齐的

所以3个segment虽然都不够 16字节,但是各自占据一个字节。

你 在debug下用D命令看看,是不是这个情况

我也刚学,所以不敢说的太绝对

#3


说错了,不是各自占一个字节,是不够16字节,都补到了16字节。
各自占16字节

#4


引用 1 楼 korekara88730 的回复:
DS是 0BA0,程序的起始就应该在0BB0,这个没错。
但是你程序的开头,不是CS,而是
a segment
    db 1,2,3,4,5,6,7,8
a ends

b segment
    db 1,2,3,4,5,6,7,8
b ends

c segment
    db 0,0,0,0,0,0,0,0
c ends

所以0BB0是 a segmen……

db 1,2,3,4,5,6,7,8这里面定义的空间不算吗?8个字有32B吧。

#5


主要是地址和操作数的区别

#6


引用 2 楼 korekara88730 的回复:
我估计 segment这东西,不够16字节,是要不齐的

所以3个segment虽然都不够 16字节,但是各自占据一个字节。

你 在debug下用D命令看看,是不是这个情况

我也刚学,所以不敢说的太绝对

好的,谢谢你,我明白了。能加下QQ以后有问题想请教一下行吗?因为我都是自学的,没有人教,遇到一个问题不会要自己看书看很久。。。

#7


我平时上不了QQ,我也是自学的,也没有人教。
共同努力吧!
最近事情比较多,已经两周没怎么动了。

犯懒了,呵呵