恋恋风辰的个人博客


  • Home

  • Archives

  • Categories

  • Tags

  • Search

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 »

汇编语言学习笔记(二)

Posted on 2017-08-12 | In 汇编

六、选择结构

if-then结构

C语言版本

1
2
3
4
5
if(count == 10)
{
count --;
i++;
}

MASM汇编

1
2
3
4
.if count==10
dec count
inc i
.endif

cmp指令,该指令用于比较两个参数大小

cmp mem, imm 比较内存mem和立即数imm大小

cmp reg, imm 比较寄存器reg和立即数imm大小

cmp reg, mem 比较寄存器reg和内存mem大小

cmp mem, reg 比较内存mem和寄存器reg大小

cmp imm, reg 比较立即数和寄存器reg大小

cmp imm, mem比较立即数和内存mem大小

cmp reg, reg比较两个寄存器数据大小

.if 内部是通过cmp实现的,.if和cmp都不能比较两个内存中数据大小

Read more »
<1…313233…37>

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