关于<实验5>最后一题! 全布的家当都压上了
本帖最后由 黑___猫 于 2012-6-25 18:32 编辑他的要求是用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,b
mov ss,ax
mov sp,16
mov ax,a
mov ds,ax
mov bx,0
mov cx,8
s:push
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
但是我在想按顺序存储到B段中,
start:mov ax,b
mov ss,ax
mov sp,16
mov ax,a
mov ds,ax
mov bx,15 我用debug测试这里BX应该是14才能按顺序存储到B段中,为什么呢?
mov cx,8
s:push
sub bx,2
loop s
本帖最后由 jianqitao 于 2012-6-25 19:43 编辑
内存单元地址00 01,02 03,04 05,06 07,08 09,10 11,12 13,14 15,16 17.......
对应的内容 (1) (2) (3) (4) (5) (6) (7) (8) (9).......
为什么不是14呢?14号内存的单元内容08h,15号00h,16号是09h,17号是00h,如果以15
号内存作为低地址读取一个字的数据的话,应该00 09,也就是900h,所以你第二个程序写入b段的数据
应该是0200h,0300h,0400h,0500h,0600h,0700h,0800h,0900h,假如是以14号内存单元作为低地址
读取一个字的数据的话,应该是08 00,也就是0008h,程序就达到预期效果,所以是14不是15。
有点要说一下的,计算机是从第0个开始的,不是从第1个开始的 本帖最后由 子夜 于 2012-6-25 21:14 编辑
{:1_1:} 纠正下内存存储是这样的
内存:01 0002 0003 00 04 00 05 00 06 00 07 00 08 00 09 00
标号:0 1 2 3 4 5 67 8 910 11 12 13 14 1516
指向14就是 0008H 了。所以不是15 ,如果是15应该是 0900H 了
哦,懂了,谢谢
页:
[1]