. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  课程设计一出错,请高人指点指点  [待解决] 回复[ 2次 ]   点击[ 198次 ]  
a3187744a
[帖 主]   [ 发表时间:2009-12-25 02:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-14 19:20
assume cs:code,ds:data,ss:stack
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'
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
        dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
        dw 11542,14430,15257,17800
        dw 0,0
data ends

stack segment
        dw 16 dup(0)
stack ends

code segment
        
        start:mov ax,data
              mov ds,ax
              mov si,0
              mov ax,stack
              mov ss,ax
              mov sp,32
          mov ax,0b800h
              mov es,ax
              mov bx,160
              mov cx,21
            s:push cx
              mov cx,4
              mov di,1
           s1:mov al,[si]
              mov es:[bx+di],al
              mov es:[bx+di+1],7
              inc si
              add di,2
              loop s1
              add bx,160
              pop cx
              loop s
              
              mov cx,21
              mov bx,30
           s2:mov ax,[si]
              mov dx,[si+2]
              add si,4
              push si
              mov si,210
              call dtoc
              push cx
              mov cl,7
              mov dx,bx
              call show
              inc bh
              pop cx
              pop si
              loop s2
              
              
              mov bx,60
              mov cx,21
           s3:mov ax,[si]
              mov dx,0
              add si,2
              push si
              mov si,210
              call dtoc
              push cx
              mov cl,7
              mov dx,bx
              call show
              inc bh
              pop cx
              pop si
              loop s3
              mov ax,4c00h
              int 21h
              
dtoc: push bx
      push cx
      push si
      push dx
      mov bx,0
dtoc_s:mov cx,10
       call divdw
       jcxz dtoc_ok
       push cx
       inc bx 
       jmp dtoc_s
dtoc_ok:mov cx,bx
dtoc_s1:pop [si]
        inc si
        loop dtoc_s1
      mov [si],0
      push dx
      push si
      push cx
      push bx
      ret
divdw:push bx
mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax
mov ax,bx
div cx
mov cx,dx
pop dx
pop bx
ret

show:push dx
  push es
  push ax
  push si
  push di
  push cx
  add dl,dl
  mov al,dh
  mov dh,160
  mul dh
  mov dh,0
  add dx,dx
  add ax,dx
  mov di,ax
  mov ax,0b800h        
  mov es,ax
  mov al,cl
show_s:mov cl,[si]
  mov ch,0
  jcxz show_ok
  mov byte ptr es:[di],cl
  mov byte ptr es:[di+1],al
  inc si
  add di,2
  jmp short show_s
show_ok:pop cx
  pop di
  pop si
  pop ax
  pop dx
  pop es
  ret
code ends
end start
运行时,那个框子一闪就没了
求助高人啊
mess
[第1楼]   [ 回复时间:2009-12-25 14:34 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
运行时,那个框子一闪就没了 
--------------
你程序还有编译错误呢。

mov es:[bx+di+1],7
mov [si],0
=================
a.ASM(34): error A2035: Operand must have size
a.ASM(94): error A2035: Operand must have size

  50382 + 450578 Bytes symbol space free

      0 Warning Errors
      2 Severe  Errors
a3187744a
[第2楼]   [ 回复时间:2009-12-26 00:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-14 19:20
3Q了,我还没看出来呢,呵呵
这是我改的程序
ok了
assume cs:code,ds:data,ss:stack
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'
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
        dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
        dw 11542,14430,15257,17800
        dd 0,0
data ends

stack segment
        dw 16 dup(0)
stack ends

code segment
start:mov ax,data
          mov ds,ax
          mov si,0
          mov ax,stack
          mov ss,ax
          mov sp,32
      mov ax,0b800h
          mov es,ax
          mov bx,160
          mov cx,21
        s:push cx
          mov cx,4
          mov di,2
   s1:mov al,[si]
          mov es:[bx+di],al
          mov es:[bx+di+1],7
          inc si
          add di,2
          loop s1
          add bx,160
          pop cx
          loop s
          mov bl,8
          mov bh,1
          mov cx,21
   s2:mov ax,[si]
          mov dx,[si+2]
          push si
          mov si,210
          call dtoc
          mov dx,bx
          push cx
          mov cl,7
          call show
          pop cx
          pop si
          add si,4
          inc bh
          loop s2
          mov bl,16
          mov bh,1
          mov cx,21
   s3:mov ax,[si]
          mov dx,0
          push si
          mov si,210
          call dtoc
          mov dx,bx
          push cx
          mov cl,7
          call show
          pop cx
          pop si
          add si,2
          inc bh
          loop s3
          mov si,84
          mov di,168
          mov cx,21
          mov bh,1
          mov bl,24
   s4:push cx
          mov ax,[si]
          mov dx,[si+2]
          mov cx,[di]
          call divdw
          push si
          mov si,210
          call dtoc
          mov dx,bx
          mov cl,7
          call show
          pop si
          add si,4
          add di,2
          inc bh
          pop cx
          loop s4
          mov ax,4c00h
          int 21h
dtoc:push bx
     push cx
     push si
     push ax
     push dx
     mov bx,0   
dtoc_s:mov cx,10
     call divdw
     add cx,30h
     push cx
     inc bx
     mov cx,ax
     jcxz dtoc_ok
     jmp dtoc_s
dtoc_ok:mov cx,bx
dtoc_s1:pop bx
        mov [si],bl
        inc si
        loop dtoc_s1
        mov byte ptr [si],0
        pop dx
        pop ax
        pop si
        pop cx
        pop bx
        ret
divdw:push bx
      mov bx,ax
      mov ax,dx
      mov dx,0
      div cx
      push ax
      mov ax,bx
      div cx
      mov cx,dx
      pop dx
      pop bx
      ret
show:push dx
     push es
     push ax
     push si
     push di
     push cx
     add dl,dl
     mov al,dh
     mov dh,160
     mul dh
     mov dh,0
     add dx,dx
     add ax,dx
     mov di,ax
     mov ax,0b800h        
     mov es,ax
     mov al,cl
show_s:mov cl,[si]
       mov ch,0
       jcxz show_ok
       mov byte ptr es:[di],cl
       mov byte ptr es:[di+1],al
       inc si
       add di,2
       jmp short show_s
show_ok:pop cx
        pop di
        pop si
        pop ax
        pop dx
        pop es
        ret
code ends
end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved