黑___猫 发表于 2012-6-25 18:20:37

关于<实验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 18:20:38

本帖最后由 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:12:04

本帖最后由 子夜 于 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 了

黑___猫 发表于 2012-6-25 21:18:36

哦,懂了,谢谢
页: [1]
查看完整版本: 关于<实验5>最后一题! 全布的家当都压上了