如何将数学随机过程更改为在dw中而不是在db中返回我?

时间:2019-06-02 19:57:51

标签: assembly random x86-16

我正在用组装图形编码游戏。在游戏中,角色教给对象的每一次都会赋予她更多的意义。我试图做到这一点,并且还有一个随机数,该数字将加到这些点上。要点是dw,随机数是db,我不会成功更改of而不破坏其他proc。我应该怎么做才能改变它。

import os
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image


class Mouse(FloatLayout):

    def on_touch_down(self, touch):
        img_path = "/home/iam/Pictures/AppImages"
        flag_path = os.path.join(img_path, "Android_celebrate.png")
        flag = Image(source=flag_path, size_hint=(None, None), size=(64, 64),
                     pos=(round(touch.pos[0], 1), round(touch.pos[1], 1)))
        self.add_widget(flag)


class TestApp(App):

    def build(self):
        return Mouse()


if __name__ == "__main__":
    TestApp().run()

1 个答案:

答案 0 :(得分:0)

proc Random7
PushAll
mov ax, 40h
mov es, ax
mov cx, 10
mov bx, 0
mov ax, [Clock] ; read timer counter
mov ah, [byte cs:bx] ; read one byte from memory
xor al, ah ; xor memory and counter
and al, 00000111b ; leave result between 0-15
add [points],al
endp Random7

此代码非常缺少PopAll。您确定PushAll还会保留ES段寄存器吗?

proc Random7
PushAll
push es
...
pop es
PopAll
ret
endP Random7

由于显示2位数字,其余代码看起来可以使用0-99之间的点。
也许你应该写

points DB 0

如果您保留points DW 0,但仍将分数限制为0-99,则应输入:

and     ax, 000Fh       ; leave result between 0-15
add     [points], ax

请注意,要将结果保留在0到15之间,您需要AND加上15(而不是像您写的那样加上7)。当然,除非您写的评论是错误的?这对于名为 Random 7 的proc是有意义的。