asdasddd 发表于 2011-8-15 03:28:04

谁帮我看下这个程序哪里有错,为什么dos不能编译出来

assume cs:codesg,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个字符串
         
         
         
         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 sumn ne ??')
table ends

codesg 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 al,
               
               mov es:,al
               
               mov al,
               
               mov es:,al
               
               mov al,
               
               mov es:,al
               
               mov al,
               
               mov es:,al
               
               ;以上8句的作用是存放年份
               
               
               
               mov ax,54h
               
               mov dx,56h
               
               mov es:5h,ax
               
               mov es:7h,ax
               
               ;以上4句的作用是存放公司总收入
               
               
               
                  mov ax,0A8h      ;第一个'人数'的段基址为0A8H
                  
                  mov es:0Ah,ax               
                  
                  ;以上2句是存放公司的人数
                  
                  
                  
                  mov ax,54h
                  
                  div word ptr ds:0A8h
                  
                  mov es:0dh,ax
                  
                  ;以上3句是存放人均收入
                  
                  
                  
                  add bx,4
                  
                  add si,2
                  
                  add di,16
                  
                  ;以上3句是为下一次循环时存放数据做准备
                  
                  ;3个寄存器递增的速度决定了所要存取的数据的位置的便宜地址
                  
      loop s ;跳到标号s处
      
      
      
mov ax,4c00h
int 21h

codesg ends
ends start

asdasddd 发表于 2011-8-15 03:29:37

已经找到错误了, 原来最下面是end,而不是ends

646246208 发表于 2011-8-15 09:25:54

我汗,end 结束你能打错,I 服了YOU

parbbo 发表于 2011-8-15 10:18:54

能找到就ok
页: [1]
查看完整版本: 谁帮我看下这个程序哪里有错,为什么dos不能编译出来