当前位置: 代码迷 >> 汇编语言 >> 王爽《编译语言》第八章最后一题,字节加载入了内存,但字却没有加载入内存,最后得到一个奇怪的结果,想知道字和双字它们跑到哪里去了
  详细解决方案

王爽《编译语言》第八章最后一题,字节加载入了内存,但字却没有加载入内存,最后得到一个奇怪的结果,想知道字和双字它们跑到哪里去了

热度:252   发布时间:2016-05-02 04:24:28.0
王爽《汇编语言》第八章最后一题,字节加载入了内存,但字却没有加载入内存,最后得到一个奇怪的结果,想知道字和双字它们跑到哪里去了
本帖最后由 qq_16707319 于 2015-09-26 13:15:24 编辑

assume cs:code,ds:data,es:table
data segment
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
        db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
        db '1993','1994','1995'
        ;以上是表示21年的21个字符串,共占用21*4个字节
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
        ;以上是表示21年公司总收的21个dword型数据
        dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
        dw 11542,14430,45257,17800
        ;以上是表示21年公司雇员人数的21个word型数据
data ends
table segment
        db 21 dup('year summ ne ?? ') ;注意这里是定义了21*16个字节
table ends

    
code segment
  start: mov ax,data
         mov ds,ax
         mov ax,table
         mov es,ax
         
         mov bx,0
         mov si,0
         mov di,0
         mov cx,21
       s:
         mov ax,ds:[di]
         mov es:[bx],ax
         mov ax,ds:[di][2]
         mov es:[bx][2],ax
         
         mov ax,ds:[di+54h]
         mov es:[bx].5,ax
         mov ax,ds:[di+54h][2]
         mov es:[bx].5[2],ax
         mov ax,ds:[si+0a8h]
         mov es:[bx].10,ax
         
         mov dx,[di+54h][2]
         mov ax,[di+54h]
         div word ptr ds:[si+0a8h]
         mov es:[bx].13,ax
         add bx,16
         add di,4
         add si,2
         loop s
  mov ax,4c00h
  int 21h
  code ends
  end start


这段代码自己debug了一下,发现code代码段的db加载进来了,但ds和dd却没有加载进来,不知道是什么原因

运行完得到了一个奇怪的结果



这是题目

------解决思路----------------------
怎么没有啊,10 00 00 00 这就是16,16 00 00 00 这就是22。
  相关解决方案