自学王爽老师的汇编语言,出现了两个问题
第一个问题:(刚才提问了一遍,有人告诉我cx没有指定,我就结贴了,更改后发现依然出现问题)
这是按书上写的
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0147h,0258h,0369h,0321h,0654h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,0010h
mov bx,0000h
mov cx,8
s:push [bx]
add bx,2
loop s
mov bx,0
mov cx,8
s0:pop [bx]
add bx,2
loop s0
mov ax,4c00h
int 21h
code ends
end start
ret
在运行时emu8086弹出对话框,上面写着“Cannot generate a COM file. Remove the stack segment.”
第二个问题:
这是一个我做的作业
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:mov dx,0
mov bx,0
mov cx,8
s:mov ax,a
mov ds,ax
mov ax,0
mov dl,[bx]
mov ax,b
mov ds,ax
add dl,[bx]
mov ax,c
mov ds,ax
mov [bx],dl
add bx,1
loop s
mov ax,4c00h
int 21h
code ends
end start
ret
这个运行时没有错误,但是我用debug一步步走的时候发现,a,b,c的值不像书上说的那样是段地址,导致结果不对。编译器把a的值定为了0010h,这个我也很纳闷。
希望大家帮帮忙~谢谢大家了~~
------解决方案--------------------------------------------------------
王爽的教程使用的是masm。 或许是emu8086与masm有啥区别吧。 关于王爽教程里的习题和讨论,
可以到这里,http://www.asmedu.net/bbs/forum.jsp ,王爽的《汇编语言论坛》,
每章每节都有你需要的
------解决方案--------------------------------------------------------