路西法和酱酱君 2018-07-24 09:52 采纳率: 0%
浏览 1256
已结题

汇编语言第8章实验7的四个illegal use of register

            在完成王爽老师汇编语言的实验7的时候,我自己的思路是先导入年份,循环;在导入收入,循环;再导入雇员数,循环;
                在这之中,利用程序中入栈的si和di来定位收入和人数的位置,再用si和di计算平均收入,导入并循环。
                思路应该是没有问题的,但是编译的时候系统提示有很多错误。在一遍遍的修改之后还是有四个错误提示:
                99,100,102,104都有一个illegal use of register
                第一次编写这种复杂的程序真的要被逼疯了,求大佬指点一下寄存器到底哪里用错了。
                代码如下:

accume cs:codesg;ds:table,ss:stacksg,es:data
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

table segment

db 21 dup ('year summ ne ?? ')

table ends

stacksg segment
dw 8 dup (0)
stacksg ends

codesg segment
start: mov ax,table ;年份
mov ds,ax

mov ax,data
mov es,ax

mov bx,0
mov cx,21
mov di,0

s0: mov bp,cx
mov cx,4
mov si,0

s: mov dl,es:[di]
mov byte ptr [bx+si],dl
inc si
inc di
loop s

add bx,16
mov cx,bp
loop s0

mov bx,5                                      ;收入
mov cx,21

mov ax,stacksg                             ;建个栈
mov ss,ax
mov sp,16
push di

s1: mov bp,cx
mov cx,4
mov si,0

s2: mov dl,es:[di]
mov byte ptr [bx+si],dl
inc si
inc di
loop s2

add bx,16
mov cx,bp
loop s1

mov bx,0Ah                                    ;雇员数
mov cx,21

push di

s3: mov bp,cx
mov cx,2
mov si,0

s4: mov dl,es:[di]
mov byte ptr [bx+si],dl
inc si
inc di
loop s4

add bx,16
mov cx,bp
loop s3

mov bx,0dh                                     ;人均收入
mov cx,21

pop di
pop si

s5: mov word ptr ax,es:[si]
mov word ptr dx,es:[si+2]

mov word ptr bp,es:[di]

div word ptr bp

mov [bx],ax

add si,4
add di,2
add bx,16

loop s5

mov ax,4c00h
int 21h

codesg ends
end start

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2018-07-25 23:42
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB报错问题
  • ¥100 多线程+连接池+代理 运行一段时间线程阻塞
  • ¥15 关于#单片机#的问题:求一个使用C语言将重力加速度gx,gy,gz积分获取到速度的代码(相关搜索:c语言)
  • ¥15 matlab导致电脑重启问题
  • ¥15 Android studio打开dex
  • ¥20 为何R语言love图显示的分类变量点与smd值不一致
  • ¥15 asp.net实验:数据库写入不成功
  • ¥15 C#视频播放器的原码,有的发一
  • ¥15 用FDTD计算并提取光栅结构的正负一级衍射光的光功率
  • ¥30 AVL fire DVI中的Design Explorer里面的Run的Status为什么总是Terminated?哪里出问题了?需要修改哪里?