一些386汇编的基础知识。个人总结,暂时还没写完……本文档属于个人的经验,不一定准确,如果有错误欢迎及时指出。
常用的汇编指令本部分主要带着读者回顾一下常用的x86汇编指令,完整内容请参考《汇编语言》和《Win32程序设计》尽管《汇编语言》介绍的是16位汇编,但其思想与用法与32位汇编很相近。
常用寄存器段寄存器CS DS ES SS:由于WIN32程序的特性,程序能直接寻址4GB内存空间,故没有必要再使用dos模式下的段寄存器寻址。相对于Windows来说,它们现在有别的作用,值都一样,而且是被Windows锁定的。
累加寄存器EAX:32位的EAX寄存器的低16位为寄存器AX。其中AX寄存器的高8位为AH,低8位为AL寄存器。EAX最常见的用途是保存函数的返回值,或者是指向函数返回值的指针(函数返回值的地址)。因此很多CALL指令之后都会带着保存EAX的指令或者判断EAX的值。
基址寄存器EBX:32位的EBX寄存器的低16位为寄存器BX。其中BX寄存器的高8位为BH,低8位为BL寄存器。EBX常作为某一数据的指针,经常以[EBX]的形式获取内存数据。
计数寄存器ECX:32位 ...
发表于 CTF
本次参赛的最大感受就是AI变nb了,今年可以用AI干好多之前无法想象的事情…..
Misc【简单】签到题找作者:
【中等】奇思妙想聪明的小羊用压缩软件打开图片,发现很明显是一个.git文件夹的结构,随便新建一个文件夹,将压缩包里的东西放进.git文件夹,然后用git status查看,没问题之后git log,发现有2次commit,最新一次是删除flag文件,用git reset还原即可
Crypto【简单】Pyyyyyyyyyyyyyyyyyyyython用AI应用秒了,解放双手
【简单】来自英仙座的怪兽 & 【中等】怪兽的最后反攻每次出一个问题,就让DeepSeek补充代码计算即可。
代码:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989 ...
期末考试
未读发表于 专业课
二 形式语言基础语法树
短语:任意子树的树叶全体皆为短语,注意短语不能是树叶的空子树构成的
简单短语:任一简单子树的树叶全体(具有共同父亲的叶节点符号串)皆为简单短语。
句柄:一个句型的最左简单短语称为该句型的句柄。
递归文法:
文法的等价性是指他们所定义的语言是一样的。
文法化简:
三 自动机基础
自动机开始节点标加号,终止节点标减号,可以有多个开始或终止节点,也可以开始就结束。但DFA开始状态唯一、且无幺元边、状态确定。
有限自动机确定化:
幺回路上的节点是等效节点。
四 词法分析五 语法分析递归子程序,自顶向下法:
递归子程序法的要求为(LL1文法):
消除左递归:
LL1分析法:
LL1文法判定:
firsta为a能够推到出的句子的终极符开头,followA为从开始Z触发推到的句型A后会出现的字符是什么。
判定定理:
LL1分析器设计:
LR()分析法:
点指向的下一个字符为自动机上临边的字符,并且下一个状态点后移。如果点后为非终极符则展开。如果点到最后则规约或者结束。
扩展句柄,SLR1: ...
期末考试
未读发表于 专业课
9 代数系统
代数系统的平凡子代数:
同态与同构:
同构必要条件:
同构的性质:保持结合律、交换律、幺员存在性、零元存在性、逆元存在性。如果代数系统含有两个运算则保持分配律、吸收律。
同态性的保持是单一方向的。
10 群与环半群、交换半群、子半群、独异点、交换独异点、子独异点、群
群的性质:可消去性、群方程唯一解、群中无零元、群中除了幺元以外无其他幂等元
群的阶:
特殊群:交换群、循环群
循环群只与两种群同构:
循环群都是交换群
证明子群的方法:
子群的陪集:
拉格朗日定理:n阶群的子群的阶数必定是n的因子,且每个元素的阶必定是n的因子。
G的阶数n如果为素数的话,则无非平凡子群且必定为循环群。
环的定义:二元运算,+为交换群,为半群。+的幺员为的零元。也是环的零元。
可交换环:*为交换半群。
含幺环:*为独异点。
含零因子、无零因子。若为可交换含幺无零因子环,则为整环。
域的定义:
11 格与布尔代数偏序集:
格的定义:任意两个元素都有上下确界
平凡格:所有全序都是格,称之为平凡格。
格的对偶原理:
格的性质:
a&b和a、b的关系 ...
发表于 专业课
支持 Windows 98 及以上的操作系统编译运行。
main.c
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131#include <Windows.h>#include "TuringMachine.h"HINSTANCE hInstance;HWND hWinMain;LPCSTR szClassName = "VLSMB";LPCSTR szCaptionMain = "计算理论-图灵机程序 Code ...
发表于 Python
(注:此文章为本人所参与的某学生团队培训大一新生时所用,面向零基础同学,因此没有提及较进阶的内容,以及内容可能不是那么专业。)
第一章 Python语言编程基础在前面的C语言学习中,我们已经了解了编程的一些基本知识,如位运算、函数等。C语言所培养的逻辑思维和问题解决能力,使我们在学习Python时能够更加高效和自信。
在开发中,Python的强大之处就在于丰富的第三方库,这些库极大地扩展了语言的功能和应用范围。例如,NumPy和Pandas为数据处理和分析提供了强大的工具,PyTorch则支持机器学习和深度学习的开发。Flask和Django则可以让新手很快写出Web页面。这些库不仅简化了复杂任务的实现,还通过高效的预构建功能,帮助开发者节省时间和精力。借助这些资源,开发者可以快速构建和原型化项目,从而加速开发进程,并专注于业务逻辑而非底层实现。这种生态系统的丰富性使得Python在数据科学、人工智能和Web开发等领域成为首选语言。
1.1 Python的安装Python的安装非常简单,你可以直接在官网上下载最新版本的安装包,点击运行安装即可。
Python官方网站
安装之后开始菜单会 ...
(注:此文章为本人所参与的某学生团队培训大一新生时所用,面向零基础同学,因此没有提及较进阶的内容,以及内容可能不是那么专业。)
第一章 网络编程基础当今的时代是互联网的时代,网络无处不在。而我们先前所写的程序,都是运行在本地计算机的。在许多情况下,我们需要写一个程序,能够为其他计算机服务。因此我们就需要使用网络编程技术。
在正式进入Web开发前,我需要简单介绍一些计算机网络知识。
1.1 IP 协议计算机为了联网,就必须约定通信协议。互联网协议包含上百协议标准,最重要的两个就是TCP协议和IP协议。
在通信时,通信双方必须知道对方的标识。互联网上每个计算机的唯一标识就是IP地址。IP地址由4个整数、3个小数点组成(称为IPv4),其中每个整数的范围都是0~255。
例如,以下几个都是正确的IP地址:
123127.0.0.1172.19.96.42219.216.96.4
IP地址主要分为公网IP、私网IP、本地环回IP以及其他用途或者保留IP。
公网IP地址是可以在互联网上直接访问的地址,每个公网IP在全球范围内唯一。互联网上的所有人都可以通过公网IP访问这个设备。
私网IP:私 ...
发表于 算法
点积和叉积如果涉及的运算都是整数,可以将返回值改为int。
叉积可用于求平行四边形面积和三角形面积。
12345678910111213double cro(point a,point b){ return a.x*b.y-a.y*b.x;}double dot(point a,point b){ return a.x*b.x+a.y*b.y;}int sgn(double x){ if(fabs(x)<eps)return 0; else return x<0?-1:1;}
向量旋转设向量为$(x, y)$,绕起点逆时针旋转,设旋转角度为$\theta$,那么旋转后的向量为:$x^{‘} = xcos \theta - ysin \theta$$y^{‘} = xsin \theta + ycos \theta$
以点代向量:
1234point Roate(point A, double rad){ return point(A.x*cos(rad) ...
发表于 CTF
头一次参加这种竞赛,感觉算是目前我遇到最有意思的一个校园竞赛了。
签到喵海报图最底下是摩斯密码,找个解密器就行。
1.... ...-- .---- .. --- ..--.- .-- --- .-. .---- -..
Flag Installer只要躲开所有流氓软件,且选择自定义安装,不要使用快速安装,即可获得前半部分flag。(金山毒霸、小鸟壁纸、贪玩蓝月、日历人生等)。同时在自定义安装的时候,需要把Access数据库勾上,这样的话在安装目录就会出现一个mdb文件,可以使用Excel打开查看后半部分flag。
两部分合并即为Flag。
从0开始的CPP生活这是在考C++成员函数的使用?(
直接在main函数里写上:
1std::cout << flag.GetFlag() << std::endl;
即可。甚至还有注释提示……
时光机器按照要求,先用 win /s 打开Win3.1,然后打开画图板,之后打开图片文件即可。
凯撒超进化按照题意来说,这是Vigenère cipher加密,因为提示key的长度为3,则可以暴力枚举偏移量。符合要求的k ...
发表于 C语言
(注:此文章为本人所参与的某学生团队培训大一新生时所用,面向零基础同学,因此没有提及较进阶的内容,以及内容可能不是那么专业。)
前言学习C语言的重要性不仅在于它是编程语言的基石,还在于它在计算机科学和软件开发领域具有广泛的应用和深远的影响。作为许多现代编程语言(如C++、Java、Python)的祖先,C语言为理解编程的基本概念提供了一个清晰的框架,如变量、循环、条件语句、函数等。通过学习C语言,开发者能够深入了解编程语言的核心结构和机制,进而更容易掌握其他高级语言。
C语言的最大优势之一是它接近硬件,允许直接操作内存,通过指针控制数据存储。这种特性使C语言在需要高性能、精确控制的场景中非常有用,比如操作系统、嵌入式系统、驱动程序开发和实时系统中。C语言的高效性使其在资源受限的环境中表现出色,特别是在嵌入式系统和物联网设备中。C语言生成的代码较小且执行速度快,能够在内存和计算能力有限的设备上运行,成为嵌入式开发的首选语言。
第一章 程序设计基础1.1 编程语言很多初学者认为编程是万能的,程序员只需要简单的几句话就可以让计算机解决所有的问题。然而,计算机其实是十分“听话的”,它只会严格执 ...