注册 登录
编程论坛 汇编论坛

x86 汇编小问题

snbbqsb 发布于 2012-12-16 04:36, 519 次点击
想做一个循环机,要把产生的数字和输出放到数组里。 每当输出为1101的时候停止运转,写完了但是一跑 程序就停止运转  可能是call randomrange出错   或者dword array 出界,大家能帮我看看吗,​

   还有,call random产生的数字在eax里面 但是这是个dword. 怎么把他放到byte的数组里面?​



.data

  Series dword 9999 DUP(0)

  output dword 9999 DUP(0)

  state dword 999 DUP(0)

 .code

 main PROC

    mov esi,0

    call Randomize

 state0:

       mov output[esi],0            ;record output

       call check

   .if(boolean==1)

     jmp printme

   .endif

   mov eax,2  ;call random

   call RandomRange

       mov series[esi],eax ;save random

   inc esi

   inc esi

   inc esi

   inc esi

  .if (eax==0)

       jmp State0

      .elseif (eax==1)

       jmp state1

      .endif
3 回复
#2
朱三哥2012-12-20 03:14
你这个程序不完整吧
#3
朱三哥2012-12-20 03:32
你给个程序的框架 有个毛用   代码贴全塞  什么有可能CALL  XXX错 CALL  XXX 错
你的 XXXX呢?
再就是 有专用更改 数据属性的 伪操作符  PTR 可以帮助你解决第二个问题

你是代码工,干嘛不 放全代码我也好学习学习嘛

mov output[esi],0   你想想这个指令吧,是有问题的, 把一个立即数放入多大的内存中呢,你没有指定,难道编译器让你过去了?
mov dword ptr output[esi],0
#4
朱三哥2012-12-20 03:35
还有,call random产生的数字在eax里面 但是这是个dword. 怎么把他放到byte的数组里面?​

你可以在定义数据的时候 使用label伪指令  还有个伪指令 叫什么来着的给忘记了

可以给一个数据定义两种属性的  

这个是可以帮组到你的

再就是在程序中 使用PTR 更改属性

别忘记结贴 给我20分

[ 本帖最后由 朱三哥 于 2012-12-20 03:36 编辑 ]
1