一、指出几处错误:
1.没有初始化栈顶指针SP。定义了栈段stack,却不初始化栈顶指针sp。
2.栈操作(push、pop)顺序颠倒。在没有进行任何入栈操作push之前就出栈pop,会引发栈顶超界危险。应该先push然后pop。
3.没有声明table段,何来取table段地址操作mov ax,table ?
4.返回指令错误,int改为int 21h
二、关于问题补充:
语法是错的。内存单元之间 是不能直接进行数据传送操作的。应该通过寄存器中转,所以
mov word ptr [bx].0ah, es: [di]. 118h 是非法操作, 应改为:
mov ax,[bx].0ah 或 mov ax,[bx+0ah]
mov es:[di].118h,ax 或 mov es:[di+118h],ax
你可能混淆了内存单元进行立即数传送操作的概念,比如:
mov word ptr [bx+0ah],2
mov byte ptr [bx+0ah],2
这才是合法的操作
我也是出学着,不知道我说的对不对。我想知道你es: [bx].0ah中的数据时什么,如果是8位的那就错了,要用16位的被除数。建议你用存储空间保存数据再用寄存器知道存储空间上,不要用基址变址这样看起来很乱,我刚开始都没有看懂。