当前位置: 代码迷 >> 汇编语言 >> 一个简略的汇编程序
  详细解决方案

一个简略的汇编程序

热度:196   发布时间:2016-05-02 04:31:28.0
一个简单的汇编程序
assume cs:codesg,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
data ends

stack segment
        db 8 dup(0)
stack ends

table segment
        db 21 dup('year summ ne ?? ')
table ends

codesg segment
start:  mov ax,data
        mov ds,ax

        mov ax,stack
        mov ss,ax
        mov sp,8

        mov ax,table
        mov es,ax

        mov bx,0
        mov bp,0
        mov cx,21

     s: push cx
        push bx

        mov si,0
        mov di,0
        mov cx,4
     s0:mov al,ds:[bx+si]
        mov es:[bp+di],al
        inc si
        inc di
        loop s0

mov ax,20h
        mov es:[bp+di],ax
        inc di

        add bx,84
        mov si,0
        mov cx,4
     s1:mov al,ds:[bx+si]
        mov es:[bp+di],al
        inc si
        inc di
        loop s1

mov ax,20h
        mov es:[bp+di],ax
        inc di

        add bx,84
        mov si,0
        mov ax,ds:[bx+si]
        mov es:[bp+di],ax
        inc di

mov ax,20h
        mov es:[bp+di],ax
        inc di

        mov ax,es:[bp+5]
        mov dx,es:[bp+7]
        div word ptr es:[bp+10]
        mov es:[bp+13],ax
        add di,2

mov ax,20h
        mov es:[bp+di],ax

        pop bx
        inc bx

        pop cx
        loop s

mov ax,4c00h
int 21h
codesg ends
end start

        

debug到mov si,0这个语句的时候,操作系统提示cpu遇到非法语句,求帮忙
------解决思路----------------------
你将出错指令换为: mov ax,ax 看出错吗?
------解决思路----------------------
这种问题通常都是堆栈设置得太小所致