|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lyoal 于 2012-11-22 21:36 编辑
求大牛们帮忙看看下面我写的一段代码,这是鱼C课后留的思考,书上的一个例子,没看书自己写的。
代码功能:是将内存中的一段中数据进行3次方运算,将结果存入另一段内存中。
代码如下:
- assume cs:code,ds:data
- data segment
- dw 11,22,33,44,55,66,77,88
- dd 8 dup (0)
- data ends
- stack segment
- dw 8 dup (0)
- stack ends
- code segment
- start: mov ax,data
- mov ds,ax ;关联数据段
- mov ax,stack
- mov ss,ax ;关联栈段
- mov sp,10h ;初始化将栈顶指针
- mov si,0 ;定义si为数据段列索引
- mov di,0
- mov cx,8 ;定义总循环次数为8
- mov ax,1
-
- s0:push cx ;将外循环cx寄存器值压入栈
- mov bx,word ptr ds:[si] ;将数据段中偏移地为si的值传送给bx
- mov cx,3 ;定义内循环cx
- call s ;调用子程序做N的3次运算
- mov word ptr ds:10h[di],ax ;将结果的低16值送入AX
- mov word ptr ds:12h[di],dx ;高16位送入DX
- add di,4
- add si,2 ;为计算下个数据做准备
- pop cx ;将外循环cx值出栈
- loop s0
-
- mov ax,4c00h
- int 21h
-
- s:mul bx
- loop s
- ret
-
-
- code ends
- end start
复制代码
能正确执行完成,但我DEBUG跟踪了一下,发现运算的结果不对,不知道怎么回事儿?求指点,万分感谢!
带上DEBUG结果:
|
|