自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (2)
  • 收藏
  • 关注

原创 汇编语言程序设计实验 期末考试

根据debug查看的内存信息以及数据在内存中的分布相关知识,可以看到前20个字存放的为arrayM中的数据。arrayP的数据从DS:0028开始,arrayN的数据从DS:0050开始。黄框中为arrayN中的部分数据,转化为十进制为:-2,-6,-6,-2,-6,-6,-8, (0,0,…红框中为arrayP中的数据:3,3,6,8,8,3,3,6,8,8,4,9,9(,0,0,…),保存了array中所有的正数,共13个;直接运行程序,显示正数个数为13个,负数个数为7个,符合预期。

2024-05-04 15:47:57 581

原创 汇编语言程序设计实验8 分支程序设计

根据debug查看和内存存放的相关知识,可知array,pdata,ndata,cpos,cneg分别位于DS:0000,DS:0010,DS:0020,DS:0030,DS:0032。可以看到pdata数组(DS:0010起始)存放了所有的正数,ndata数组(DS:0020起始)存放了所有的负数,正数和负数的个数分别为5和3.程序主体部分如下:用LOOP检测array中的每个数的正负性,对正数和负数分别进行处理(放到对应的数组并累计个数)【3】在数据段定义分支地址表,通过键盘输入数字1~8,实现转移。

2024-05-04 15:46:13 447

原创 汇编语言程序设计实验7 顺序程序设计

原因:在程序开始时向堆栈压入DS和0,在最后执行ret结束程序时,将0弹出到寄存器IP,将PSP弹出到CS,于是程序就执行[CS:IP]也就是[PSP:0]处的指令,即INT 20H。编写如上程序,循环128次,每次将地址BX(初始为2000H)处的值值为0并令BX自增,即可实现将从2000H单元开始的连续128个单元的内容进行清零。4. 将 3000H 单元的一个字节的内容进行拆分,高半字节放进 3001H 单元的低半部分,其低半字节放进 3002H 单元的低半部分。

2024-05-04 15:45:36 425

原创 汇编语言程序设计实验6 伪指令(非数据存储类)

可以看到[0008:000A]存放的数据为19 30 0C 30.根据小端法的存储结构,对应的Z的数据为300C3019。2. 验证例题6.11,初始分配的cs段地址和反汇编以后的cs段地址是否一致,体会main proc far 中far的属性设定含义。这两个指令的运行结果是否一样。说明是否加中括号对数字表达式的汇编没有影响,都直接被汇编成计算得到的数值。可以看到Z存放在数据段的[0008:000A]。掌握常用伪指令的使用方法。可以看到两个cs段地址是一样的。

2024-05-04 15:44:59 213

原创 汇编语言程序设计实验5 伪指令(数据存储类)

DW定义字,故每个操作数占有一个字。程序默认是16进制数,故14在内存中为000E。315H即为存储为0315,-6存储为补码FFFA。首先看内层的(2 dup(1,2,3),4),展开相当于将1,2,3复制两遍后再加上4,结果为01 02 03 02 02 03 04.外层再复制4次得到上图的内存分布.DB定义字节,每个操作数占有一个字节。第一个7存储为07,后面按序存储ABCDEFG的ASCII码。da3这里用一个字保存了da4的起始地址0102,故前两个字节存放为02 01。

2024-05-04 15:43:41 192

原创 汇编语言程序设计实验4 算术及移位指令实验

【2】(例5.39)在数据段中有一个字符串MESS,其长度为19,要求把它们转送到附加段中名为BUFF的一个缓冲区中,并显示出BUFF字符串。(1)字符串的比较函数中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区,并指出不相等的位置。(输出的字符在第一个,输入IloveAHU的结果为Y,输如IloveUSTC的结果为6(在字符U处失配),符合预期)。前面部分与上题相同。(2)在字符串中查找某个字符,字符串在数据段定义,要查找的字符在程序执行时从键盘输入,并指出找到的位置。

2024-05-04 15:42:52 305

原创 汇编语言程序设计实验3 算术及移位指令实验

解释:ZF为是否为零,全程均未出现运算结果未0;减法的答案为(CX,DX)=(FFFD D1F7)=-A(-142857的补码),均符合预期。实验思路:令A=142857(00022E09H),B=666666(000A2C2A),令寄存器AX、BX分别存放A的高位和低位,CX、DX分别存放B的高位和低位。【4】思路:将结果存放在寄存器BL中,每次令BL左移一位后加上BL除以2得到的余数,重复8次BL的值即为AL字节内容反向排序的结果。(2)跟踪程序,记录每条指令执行后的ZF,SF,CF,OF标志。

2024-05-04 15:42:11 314

原创 汇编语言程序设计实验2 不同寻址方式的灵活运用

使用D命令检查,发现附加段的0020H已被赋值为AX的值。第四行代码使用直接寻址方式将相减的结果(38H-10H=28H)保存到0016H单元。可以观察到执行MOV AX,BX指令后,BX的值4050H被传送到AX寄存器中。执行指令,可以看到存放在BX寄存器的数值作为偏移地址,进一步找到该地址单元DS:4050中的数据并将其存放到AX寄存器中。设置(BX)=4000H,然后使用MOV AX,[BX+50]将DS:4050H的内容送入AX。执行代码,可以看到BX寄存器的值为0012H,符合预期。

2024-05-04 15:40:34 453

原创 汇编语言程序设计实验1 汇编环境与 DEBUG 调试

(4)用T命令跟踪程序,在跟踪执行INT 21时发现在继续执行一个奇怪的程序(如上图)。可以看到执行-g E后程序在调用INT 21结束程序前停下;再运行-g后程序结束。(3)用T命令跟踪HELLO.EXE,写出每一步执行后,相关寄存器的内容。使用G命令运行,可以看到程序输出了两遍Hello World,符合预期。2. 用同样的方式编写单个字符的键盘输入与显示输出的程序,并汇编、连接。解决方法:在遇到系统调用指令(INT 21)时将T换成P,如下图所示。(在新开的debug中实验,以免被(1)的修改干扰)

2024-05-04 15:39:26 469

NOIP2011-2014参考答案

NOIP2011-2014年的参考答案,希望对大家有所帮助

2015-10-17

DEV C++ 5.11

最新版本的DEV C++5.11,配备g++4.9.2,十分好用的一款IDE,适合信息学竞赛的同学使用

2015-09-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除