百撕不得?
这是一个功能很简单的程序 代码也没多少 就是计算data段中的第一组数据的立方 在保存在其下一组DWORD单元中
程序已经写好 而且反复看了应该没错 但是发现一个很奇怪的东西 不知道是我错了 还是机器错了?
如果是MASMPlus可以直接拷贝编译 ...
程序代码:
;#Mode=DOS ;MASMPlus 单文件代码模板 - 纯 DOS 程序 ;-------------------------------------------------------------------- ;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows. ;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式 ;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件 assume cs:code, ds:data data segment dw 1, 2, 3, 4, 5, 6, 7, 8 dd 0, 0, 0, 0, 0, 0, 0, 0 data ends code segment start: mov ax, data mov ds, ax mov di, 16 mov si, 0 mov cx, 8 s: mov bx, [si] call cube mov [di], ax mov [di].2, dx add si, 2 add di, 4 loop s mov ax, 4c00h int 21h cube: mov ax, bx mul bx mul bx ret code ends end start运行debug后得到的结果是这个
为什么是00 02 00 00 而不是 00 00 00 02? 显然后者才是正确的啊。
求揭秘......
[ 本帖最后由 有容就大 于 2012-9-3 21:48 编辑 ]