马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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结果:
|