代码一:
- Assembly code
assume cs:cde,ds:dta,ss:stkdta segment dw 0123h,0456h,0789h,0987h,0abch,0fedh,0edfh,0defhdta endsstk segment dw 0,0,0,0,0,0,0,0stk endscde segmentstart:mov ax,stk mov ss,ax mov sp,16 mov ax,dta mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21h cde endsend start
代码二:
- Assembly code
assume cs:code,ds:data,ss:stackdata segment dw 1023h,0456hdata endsstack segment dw 0,0stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21hcode endsend start
代码三:
- Assembly code
assume cs:code,ds:data,ss:stackcode segmentstart: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2] pop ds:[2] pop ds:[0] mov ax,4c00h int 21hcode endsdata segment dw 0123h,0456hdata endsstack segment dw 0,0stack endsend
如果将代码一,代码二,代码三中的最后一条伪指令end start改为 end(也就是不指明程序的入口),则哪个程序仍然可以正确执行?请说明理由。
我用masm5.0 编译连接以后,发现没什么异常啊,好像都能运行,怎么回事?
------解决方案--------------------------------------------------------
你搞多代码段试一下。不要只有一个code segment。
自己动手才记得牢
------解决方案--------------------------------------------------------
代码三可以正常运行了。因为没有指明程序的入口,代码一和二会把数据段,栈段看成程序。1L意思是让你多写几段程序。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
第一个第二个绝对不能正常运行,LZ 你重新试一下
确定先去掉start,然后用debug打开程序,用u命令一看程序内容就知道了