左岸阳光

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

11 2012 档案

摘要:A~B:我用的枚举两个数字组成的所有数,同时判重bool超内存了,用位压缩才过~C: 求n个数的一组序列连续从i到j或操作可能得到多少不同的数字。每个数字不超过10^6,即20位。所以或操作本质是向20位二进制的序列填1。对于每个数ai,枚举每位,向前(0的方向)或。如果该位为0,则向前或过程中其他数该位变化不会由该数引起,此时加入当前数直接退出;如果该位为1,向前或过程中其他位的变化可以contribute to这一个数,为了避免重复,向前或持续到其左边第一个位数为1的数处。对20位处理完后,直接输出判重后的结果(判重是相对于20个位之间)。对于同一位不会出现重复加入同一个数字。每个数最多重 阅读全文
posted @ 2012-11-21 18:16 左岸阳光 阅读(203) 评论(0) 推荐(0)

摘要:A,B两个水题。C:BFS求最短路,由于范围很大(1e9),而且实际的可走范围比较小,所以需要存储映射关系,类似稀疏矩阵的三元组 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <map> 5 #include <utility> 6 #include <queue> 7 #define LL long long 8 9 using namespace std;10 11 int dx[] = {0, 0, 1, -1, 阅读全文
posted @ 2012-11-13 11:45 左岸阳光 阅读(373) 评论(0) 推荐(0)

摘要:外中断是指那些不再CPU内部产生的中断,即通过端口与cpu通信的外设产生的中断。可屏蔽中断是CPU可以不响应的外中断不可屏蔽中断是CPU必须响应的中断,其中断类型码都是2sti,cli可以屏蔽中断,让一些如改变中断向量的操作安全进行。(1)下面程序在屏幕中某个位置一次输出A~Z,按ESC改变该位置颜色: 1 ;中断时的入栈顺序是pushf,push cs, push ip 2 assume cs : codesg, ss : stacksg 3 4 stacksg SEGMENT 5 dw 64 dup (0) 6 stacksg ENDS 7 8 9 10 codesg SE... 阅读全文
posted @ 2012-11-11 22:16 左岸阳光 阅读(1369) 评论(0) 推荐(0)

摘要:这两个实验都需要操作软驱,也都只要用到dos系统。(1)对于实验15,要求在dos系统下运行实验程序,就要将exe文件转移到dos系统。我是这么做的,在vmware下给xp虚拟机设置一个dos软驱镜像(随便下一个),用WinImage将汇编,链接得到的exe文件导入dos软驱镜像。在启动虚拟机的时候设置启动项为floppy drive(软驱启动),就会启动到dos下,且可以运行导入的exe文件。(2)对于课程设计,可以先安装一个dos虚拟机,设置一个含有实验程序的软驱镜像。在启动虚拟机的时候设置启动项为floppy drive(软驱启动),就会自动运行你自己写的特别的程序。明天写实验~ 阅读全文
posted @ 2012-11-11 00:29 左岸阳光 阅读(451) 评论(0) 推荐(0)

摘要:编写int 7ch中断例程,实现:清屏设置前景色设置背景色向前滚动一行要求ah寄存器传递功能号:0, 1, 2, 3对应上述功能;al传递颜色值,al->[0, 7].中断程序中的call,jmp都应该选择偏移类型的指令,因为标号地址是编译器在汇编或者连接时期计算的,用偏移量才能保证指令安装在别的地址也能正常运行。标号后无冒号只能出现在代码段,无冒号可以代表数据类型和地址,有冒号的标号只能代表偏移。 1 ;中断时的入栈顺序是pushf,push cs, push ip 2 assume cs : codesg, ss : stacksg 3 4 stacksg SEGMENT 5 ... 阅读全文
posted @ 2012-11-10 10:09 左岸阳光 阅读(1643) 评论(0) 推荐(1)

摘要:端口读写分别用in和out,移位大于1时移位数先存在cl里。CMOS RAM在70h端口输入的是读写的地址,71h存储的地址存储的字节内容。cpu能直接读取的只有寄存器,内存和端口。访问CMOS RAM读取系统时间:View Code 1 ;中断时的入栈顺序是pushf,push cs, push ip 2 assume cs : codesg, ss : stacksg 3 4 stacksg SEGMENT 5 dw 16 dup (0) 6 stacksg ENDS 7 8 9 10 codesg SEGMENT 11 12 start: mo... 阅读全文
posted @ 2012-11-09 14:55 左岸阳光 阅读(838) 评论(0) 推荐(0)

摘要:(1)编写并安装int 7ch中断例程,在dh行,dl列用cl颜色属性从ds:si处输出以0结尾的字符串。编写中断程序时要注意保护现场。安装程序如下: 1 assume cs : codesg, ss : stacksg 2 3 stacksg SEGMENT 4 dw 16 dup (0) 5 stacksg ENDS 6 7 8 9 codesg SEGMENT10 11 start: mov ax, 012 mov es, ax13 mov di, 0200h14 mov ax, codesg15 mov ds, ax16 m... 阅读全文
posted @ 2012-11-09 10:47 左岸阳光 阅读(1256) 评论(0) 推荐(0)

摘要:0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出‘divided error’,改成直接退出就正常显示了。注意修改ss,sp之间的中断是不响应的。 1 assume cs : codesg, ss : stacksg 2 3 stacksg SEGMENT 4 dw 16 dup (0) 5 stacksg ENDS 6 7 8 9 codesg SEGMENT10 11 start: mov ax, 012 mov es, ax13 mov di, 200h14 mov ax, cs15 mov ds, ax... 阅读全文
posted @ 2012-11-08 23:18 左岸阳光 阅读(845) 评论(0) 推荐(0)

摘要:1 ;call 的时候ip入栈 2 assume cs : codesg, ds : datasg, ss : stacksg 3 4 datasg SEGMENT 5 db '19751976197719781979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991',& 阅读全文
posted @ 2012-11-07 23:24 左岸阳光 阅读(657) 评论(1) 推荐(0)

摘要:1 ;解决除法溢出的子程序,(商为32位时的溢出) 2 assume cs : codesg, ds : datasg, ss : stacksg 3 4 datasg SEGMENT 5 db 'welcome to masm!' 6 datasg ENDS 7 8 stacksg SEGMENT 9 dw 8 dup (0)10 stacksg ENDS11 12 codesg SEGMENT13 14 15 start: 16 mov ax, stacksg17 mov ss, ax18 mov sp, 1619 20 mov ax, 4240h21 mov dx, 0f 阅读全文
posted @ 2012-11-05 20:58 左岸阳光 阅读(248) 评论(1) 推荐(0)

摘要:1 ;16位汇编 BX、BP、SI、DI 才能间接寻址, ax不行 2 ;程序开始时cx大小是程序的长度 3 ;存储器不能到存储器 mov/add 4 5 assume cs : codesg, ds : datasg, ss : stacksg 6 7 datasg SEGMENT 8 db '19751976197719781979','1977','1977','1977','1977','1977','1977','1977','1977',& 阅读全文
posted @ 2012-11-05 16:00 左岸阳光 阅读(327) 评论(0) 推荐(0)

摘要:View Code assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENT ...datasg ENDSstacksg SEGMENT ...stacksg ENDScodesg SEGMENTstart: ... ... codesg ENDSEND start上面是基本框架。寄存器有ax, bx, cx, dx, es, ds, ss, si, di, sp, bp, ip, psw下面总结下今天学到的:立即数不能作用于段寄存器;间接寻址不能用ax(即[ax]不能用),只能用bx, si,... 阅读全文
posted @ 2012-11-03 22:48 左岸阳光 阅读(258) 评论(2) 推荐(0)

摘要:char * strdup(char * s) 是将s字符串的内容拷贝到malloc的堆内存上,返回指针,注意别忘记free(). 阅读全文
posted @ 2012-11-02 22:32 左岸阳光 阅读(206) 评论(0) 推荐(0)