恋恋风辰的个人博客


  • Home

  • Archives

  • Categories

  • Tags

  • Search

python学习笔记(五) 200行实现2048小游戏

Posted on 2017-08-21 | In python

用前文提到的基础知识,和网上流行的2048源码,用python实现该游戏。

先将用户操作和游戏逻辑绑定。

WASD分别对应移动方向上、左、下、右

https://cdn.llfc.club/py051.png
然后实现矩阵的转置和逆置,这样只要实现一个方向的移动,通过转置和逆置就可以得到其他方向的移动。

Read more »

python学习笔记(四) 思考和准备

Posted on 2017-08-21 | In python

一、zip的坑

zip()函数接收多个可迭代数列,将数列中的元素重新组合,在3.0中返回迭代器指向

数列首地址,在3.0以下版本返回List类型的列表数列。我用的是3.5版本python,

所以zip返回的是指向地址。

先看几个例子
https://cdn.llfc.club/py041.png

Read more »

python学习笔记(三)高级特性

Posted on 2017-08-17 | In python

一、切片

list、tuple常常截取某一段元素,截取某一段元素的操作很常用 ,所以python提供了切片功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
L=['a','b','c','d','e','f']
#取索引0,到索引3的元素,不包括索引3
print(L[0:3])
#开始索引为0可以省略
print(L[:3])
#下标1到3
print(L[1:3])
#取最后一个元素
print(L[-1])
#取倒数后两个元素
print(L[-2:])
#取前四个数,每两个取一个
print(L[:4:2])
#所有数,每两个取一个
print(L[::2])
Read more »

python自学笔记(二)

Posted on 2017-08-17 | In python

通过前文介绍,大体上可以用学过的知识做一些东西了。

这里简单介绍下python参数解析argparse命令。

使用argparse需要引用

import argparse

然后调用

parser = argparse.ArgumentParser()

ArgumentParser()函数可以传一些参数

parser = argparse.ArgumentParser(description='This is a PyMOTW sample program')

参数有很多种类型,读者自己查阅,参考资料的链接:

https://blog.ixxoo.me/argparse.html

Read more »

python自学笔记(一)

Posted on 2017-08-16 | In python

我没学过python,通过网上和一些图书资料,自学并且记下笔记。

很多细节留作以后自己做项目时再研究,这样能更高效一些。

python基础自学笔记

一、基本输入和输出

pthon3.0用input提示用户输入,用print提示用户输出,格式为print(“…”)

如果格式化输出,那么格式为print("%d" %(变量名)), %d可以替换为%s等其他格式符,以后用到什么格式自己查,这样学起来高效。

简单的例子:

1
2
3
4
5
#-*-coding:utf-8-*-
name = input("What's your name ? >")
age = input("How old are you ? >")
print ("your name is %s, your age is %d" %(name, int(age)))
print ("你的名字是 %s, 你的年龄是 %d" %(name,int(age)))
Read more »

汇编基础最后一篇--机器语言指令

Posted on 2017-08-15 | In 汇编

这是汇编语言基础最后一篇,以后还会更新更高级的汇编知识,并且这部分知识会应用到逆向编程的环节,这一章介绍汇编基础–机器指令。

一个16比特位的汇编指令:
1.png
opcode操作码占用3个比特位,可以表示2的3次方为8种操作

寄存器占用2个比特位,可表示2的2次方为4种可用寄存器

地址空间为2的11次方为2048个可能的内存单元地址可用。

Read more »

汇编语言学习笔记(六)

Posted on 2017-08-15 | In 汇编

十八、字符串处理

前文介绍过字符串的处理,字符串是byte类型 的数组,现在实现一段代码,将字符串string1数据copy到字符串string2中

代码如下

1
2
3
4
5
6
7
8
9
10
11
    .data
string1 byte "Hello World!", 0
string2 byte 12 dup(?), 0
    .code
mov ecx, 12
mov ebx,0
.repeat
mov al, string1[ebx]
mov string2[ebx], al
inc ebx
.untilcxz

通过ecx递减,将字符串string1每个字符一次copy给string2中,其中用到了ebx基址寄存器。

也可以通过esi和edi寄存器

1
2
3
4
5
6
7
8
9
10
11
12
13
.data
string1 byte "Hello World!"
stirng2 byte 12 dup(?), 0
    .code
mov ecx,12
lea esi, string1
lea edi, string2
.repeat
mov al,[esi]
mov [edi],al
inc edi
inc esi
.untilcxz
Read more »

汇编语言学习笔记(五)

Posted on 2017-08-15 | In 汇编

十六、数组

数组的基本表示方法

numary sdword 2,5,7

numary数组中有三个元素,为sdword类型,分别为2,5,7

empary sdword ?, ?,?

empary数组为sdword类型元素,未初始化。

如果数组元素很多可通过

zeroary sdword 100 dup(0)

zeroary数组中有100个0

empary sdword 3 dup(?)

empary 数组中有3个未初始化的sdword类型数据

mov eax, numary+8; 表示把数组numary第3个元素放入eax中

sdword为四字节,numary+0表示numary首地址,也是第一个元素地址,以此类推,numary+8为第三个元素首地址。

mov numary+0, eax; 将eax内容放入数组第一个元素中。

除了采用数组首地址+偏移地址方式,可以采用ebx基址寄存器进行数组索引。

访问numary第三个元素

mov ebx, 8;ebx存储8

mov eax, numary[ebx];访问numary偏移8字节的元素,也就是第三个元素,放入eax中。

Read more »

汇编语言学习笔记(四)

Posted on 2017-08-14 | In 汇编

十三 过程

汇编语言的过程可以被理解为方法,过程调用采取如下形式

call pname

pname为过程名,call为调用指令

pname过程的格式为

1
2
3
4
pname proc
; 过程体
ret
pname endp

proc 告知编译程序过程pname的开始,endp告诉编译程序过程pname的结束。ret指令表明何时返回到调用程序中,ret和高级语言return不一样,ret不返回任何值给调用程序。ret是过程中必不可少的调用指令。

举个过程的实例:

1
2
3
4
5
6
7
8
sample      proc
.if eax == 0
mov eax, 1
.else
mov edx, 0
.endif
ret
sample endp
Read more »

汇编语言学习笔记(三)

Posted on 2017-08-12 | In 汇编

八、逻辑运算指令

数字在计算机中以二进制存储,每个位数字为0或者1,当两个二进制数字进行逻辑按位&,逻辑按位|,逻辑异或^操作,

可以采用汇编语言提供的逻辑运算指令and,or, xor,not等指令。

and指令:

C语言&操作,将0110&1101得出结果为0100

C语言代码为

1
2
if(flag & maskit)
count++;

汇编语言高级指令可实现:

1
2
3
4
mov eax, flag
.if eax & maskit
inc count
.endif

不采用高级指令的情况下可采用如下代码:

1
2
3
4
5
if01:     mov eax, flag
and eax, flag
jz endif01
then01: inc count
endif01: nop
Read more »
<1…343536…41>

401 posts
18 categories
21 tags
RSS
GitHub ZhiHu
© 2026 恋恋风辰 本站总访问量次 | 本站访客数人
Powered by Hexo
|
Theme — NexT.Muse v5.1.3