鱼C论坛

 找回密码
 立即注册
查看: 1975|回复: 3

大家帮忙看下我的这个程序哪里出错了。

[复制链接]
发表于 2012-9-14 17:17:02 | 显示全部楼层 |阅读模式
2鱼币

    程序的作用是将 data段中第一组数据的3次方。。结果存在后面的一组的dword单元中
assume cs:code ds:data
data segment
dw 1,2,3,4,5,6,7,8
dw 0,0,0,0,0,0,0,0
data ends
code segment
start: mov ax,data
       mov ds,ax
   
    mov si,0
    mov cx,8
    s:         
        mov bx, ds:[si]
        mov ax,bx
        mul  bx
     mul  bx
     mov  ds:[si+16],ax
     inc si
     loop s
     mov ax,4c00h
     int 21h
   code ends
  end start

最佳答案

查看完整内容

呵呵 楼主, 你看看~ 问题: 为什么无法实现数字n的3次方 分析: 1, ds里的 数字是 dw型。是一个字,每个字占二个字节, 所以是 add si, 2 2, mul bx 这样是16位运算(bx,是通用寄存器,是十六位的), 值默认在 ax(低十六位) 和 dx (高十六位) 中, 所以应该是 mul 8位寄存器, 我是用 mul bl (换做别的8位寄存器也可以) 代码如下呵呵 楼主 希望能帮助你, bye~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-14 17:17:03 | 显示全部楼层
呵呵  楼主,   你看看~

问题:  为什么无法实现数字n的3次方

分析:  1,  ds里的 数字是  dw型。是一个字,每个字占二个字节,  所以是  add si, 2   
            2,  mul bx   这样是16位运算(bx,是通用寄存器,是十六位的),  值默认在  ax(低十六位) 和  dx (高十六位) 中,  所以应该是  mul 8位寄存器,  我是用  mul bl (换做别的8位寄存器也可以)

代码如下
assume cs:code, ds:data

data segment
 dw 1,2,3,4,5,6,7,8
 dw 0,0,0,0,0,0,0,0
data ends

code segment

start:mov ax,data
      mov ds,ax
      mov si,0
      mov cx,8
   s: mov bx, ds:[si]
      mov ax,bx
      mul bl
      mul bl
      mov ds:[si+16],ax
      add si, 2
      loop s
      mov ax,4c00h
      int 21h
          
code ends
end start
呵呵  楼主  希望能帮助你,  bye~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-14 22:04:59 | 显示全部楼层
我也是才学完汇编语言第二版,不敢保证全部正确,以下是我的看法:

数据定义中dw 0,0,0,0,0,0,0,0改为dd 0,0,0,0,0,0,0,0
循环里面:mov  ds:[si+16],ax
                  inc si
也有问题
因为第一排数据是dw,字型数据,所以si要加2,add si,2   或者用两个  inc si
还有3次方的结果存放在dx,ax中,是双字数据,所以第二排定义的数据是dd(双字)
存放结果应该是:mov ds:[16 +si+0],ax
                           mov ds:[16+si+2],dx(因为要有对比,好看清楚,所以写的麻烦点)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-14 22:41:26 | 显示全部楼层
楼上的正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 04:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表