|
汇编语言程序设计--笔记
(摘自www.77169.com Hacker_rOOt收集整理) ********************爱因斯坦的问题***************************** 这里有一个很老的题目,看看你能在多长时间内说出答案。 问题是:在一条街上,有5座房子,喷了5种颜色;每个房里住着不同国籍的人;每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物。请问:谁养鱼? 提示: 1. 英国人住红色房子 2. 瑞典人养狗 3. 丹麦人喝茶 4. 绿色房子在白色房子左面 5. 绿色房子主人喝咖啡 6. 抽pall mall 香烟的人养鸟 7. 黄色房子主人抽dunhill 香烟 8. 住在中间房子的人喝牛奶 9. 挪威人住第一间房 10. 抽blends香烟的人住在养猫的人隔壁 11. 养马的人住抽dunhill 香烟的人隔壁 12. 抽blue master的人喝啤酒 13. 德国人抽prince香烟 14. 挪威人住蓝色房子隔壁 15. 抽blends香烟的人有一个喝水的邻居 这是一道很典型的逻辑推理题,对于此题使用表格方法,通过假设找出矛盾,从而得到正确答案,是比较快速的方法,但即使是这样我见到的最快解出此题的人也用了十几分钟,那么电脑需要多久呢?答案是不到一秒钟! 如果让电脑完全按人类的推理来进行工作,那恐怕代码要写非常长,而且对于以后遇到类似的问题几乎没有什么参考价值。我们可以采用表格法进行递归穷举,利用电脑的强大的计算能力加上一些不复杂的逻辑来实现它,但是对于5!的5次方超过248亿个可能性,计算量相当的惊人。而采用按“国籍”、“饮料”、“色彩”、“香烟”、“宠物”五项信息依次对表格进行可能性填充,一旦不符合逻辑条件则立即中止向后面的信息进行判断,这样就可大大减少运算次数。 我们将使用二维数组InfoArray实现对各信息的初始化,二维数组矩阵Matrix记录表格定义,数组used来存贮与之对应的信息选项是否已用过。AccordWithLogic函数判断是否符合命题逻辑,可以对命题的条件先作一下整理再按信息类别依次来判断,而且输入条件不能涉及到未填充的信息。例如:当前才填充到“饮料”信息就不能去判断涉及到“香烟”的第15个条件,因为还没有向表格中填充任何香烟,那么得出的判断结果是不正确的。FillMatrix函数是程序的主体,它以递归的方式列举了所有的排列可能性。PrintResult函数用于打印结果。 整个代码是一个大循环,使用了backtracing的设计思想。 Delphi代码实现 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button4: TButton; Label1: TLabel; Label3: TLabel; procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var Matrix: array[0..4 , 0..4] of smallint; //表格 MatrixRowCount: integer = 4; //表格最大行数 ,即信息数 MatrixColCount: integer = 4; //表格最大列数 ,即每项信息的个数 // 实现对各信息的初始化 InfoArray: array[0..4, 0..4] of string =(('挪威人', '英国人', '瑞典人', '丹麦人', '德国人'), ('茶', '咖啡', '牛奶', '啤酒', '水'), ('红色', '绿色', '黄色', '蓝色', '白色'), ('Prince', 'Pall Mall', 'Dunhill', 'Blends', 'Blue Master'), ('狗', '鸟', '马', '猫', '鱼')); used: array[0..4 , 0..4] of integer; //与InfoArray对应的元素是否已用过 count_get, count_pr integer; //结果的个数、共进行了多少次递归运算 // 取得信息号和项目序号所对应的值并和给定值进行对比 function CompareItem(InfoID, ItemIndex: Integer; CompareText: string): Boolean; begin if (ItemIndex <= MatrixColCount) and (ItemIndex >= 0) then Result := InfoArray[InfoID, Matrix[InfoID, ItemIndex]] = CompareText else Result := False; end; // 采用按'国籍'、'饮料'、'色彩'、'香烟'、'宠物' // 五项信息依次对已生成的序列进行逻辑判断 function AccordWithLogic(InfoID: integer): boolean; var ItemIndex: Integer; begin Result := True; for ItemIndex := 0 to 4 do begin case InfoID of 0: begin if CompareItem(0, ItemIndex, '挪威人') and not (ItemIndex = 0) then Result := False; end; 1: begin if (CompareItem(1, ItemIndex, '茶') and not CompareItem(0, ItemIndex, '丹麦人')) or (CompareItem(1, ItemIndex, '牛奶') and not (ItemIndex = 2)) then Result:=False; end; 2: begin if (CompareItem(2, ItemIndex, '绿色') and not CompareItem(1, ItemIndex, '咖啡')) or (CompareItem(2, ItemIndex, '红色') and not CompareItem(0, ItemIndex, '英国人')) or (CompareItem(2, ItemIndex, '绿色') and not CompareItem(2, ItemIndex + 1, '白色')) or (CompareItem(2, ItemIndex, '蓝色') and not (CompareItem(0,ItemIndex + 1, '挪威人') or CompareItem(0, ItemIndex - 1, '挪威人'))) then Result:=False; end; 3: begin if CompareItem(3, ItemIndex, 'Dunhill') and not CompareItem(2, ItemIndex, '黄色') or CompareItem(3, ItemIndex, 'Prince') and not CompareItem(0, ItemIndex, '德国人') or CompareItem(3, ItemIndex, 'Blue Master') and not CompareItem(1, ItemIndex, '啤酒') or CompareItem(3, ItemIndex, 'Blends') and not (CompareItem(1, ItemIndex + 1, '水') or CompareItem(1, ItemIndex - 1, '水')) then Result:=False; end; 4: begin if CompareItem(4, ItemIndex, '狗') and not CompareItem(0, ItemIndex, '瑞典人') or CompareItem(4, ItemIndex, '鸟') and not CompareItem(3, ItemIndex, 'Pall Mall') or CompareItem(4, ItemIndex, '猫') and not (CompareItem(3, ItemIndex + 1, 'Blends') or CompareItem(3, ItemIndex - 1, 'Blends')) or CompareItem(4, ItemIndex, '马') and not (CompareItem(3, ItemIndex + 1, 'Dunhill') or CompareItem(3, ItemIndex - 1, 'Dunhill')) then Result:=False; end; end; //case end if Result = False then Exit; end; //for end end; //打印结果 procedure PrintResult; var i, j: integer; S: string; begin for j := 0 to 4 do begin for i := 0 to 4 do begin S := S + InfoArray[i, Matrix[i, j]] + ','; end; S := S + #13#10; end; form1.Memo1.Lines.Add(S); end; procedure FillMatrix(ItemIndex,InfoID:integer); var i: integer; begin inc(count_pro); // 信息共五项,依次为 国家 饮料 色彩 香烟 宠物 // 用InfoID表示并定义为0-4, ItemIndex 表示每项信息的值 if ItemIndex > MatrixColCount then //如果这个信息所有的信息项全部用完 begin if not AccordWithLogic(InfoID) then //如果本次信息填充结果不能通过逻辑判定,则退出进行下一次填充 Exit; if InfoID = MatrixRowCount then //如果填充完了所有信息,则显示结果后退出,否则填充下一个信息 begin PrintResult; inc(count_get); Exit; end else FillMatrix(0, InfoID + 1); end; for i := 0 to MatrixColCount do begin if (used[InfoID, i] = 0) then // 如果第i个元素未用过 begin used[InfoID, i] := 1; // 使用第i个元素,作上已用标记,目的是使以后该元素不可用 Matrix[InfoID, ItemIndex] := i; // 保存当前搜索到的第i个元素到表格 FillMatrix(ItemIndex + 1, InfoID); // 递归搜索 used[InfoID, i] := 0; // 恢复递归前的值,目的是使以后该元素可用 end; end; end; procedure TForm1.Button4Click(Sender: TObject); begin count_get := 0; count_pro := 0; FillMatrix(0, 0); label1.Caption := inttostr(count_get) + ' ' + inttostr(count_pro); end; end. |
|
汇编语言程序设计--笔记
例: MOV AL,OB4H ;(AL)=B4H MOV BL,11H ; (BL)=11H IMUL BL ;(AX)=0FAF4H AX 是怎么得到这个结果的? 答案在↓ 解: MOV AL,OB4H ;(AL)=B4H MOV BL,11H ; (BL)=11H IMUL BL ;(AX)=0FAF4H IMUL这个指令是运算有符号数的,所以al,bl的数据要看成有符号数,al=b4h,实际上是-76d,bl在这里就是正的,所以他就是17d,-76*17=-1292d,1292d=10100001100b,求补后为-1292d=01011110100,由于是负的,要补符号1,所以ax里面是1111,1010,1111,0100换算成16进制的就是f a f 4 了。 |
|
汇编语言程序设计--笔记
(出自http://bbs.77169.com/ 乱七八糟收集整理) 8088汇编指令表 一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP 交换32位寄存器里字节的顺序 XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加.( 结果在第一个操作数里 ) XLAT 字节查表转换. ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL ) 2. 输入输出端口传送指令. IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 ) 输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 其范围是 0-65535. 3. 目的地址传送指令. LEA 装入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS 传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES 传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 传送目标指针,把指针内容装入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI. 4. 标志传送指令. LAHF 标志寄存器传送,把标志装入AH. SAHF 标志寄存器传送,把AH内容装入标志寄存器. PUSHF 标志入栈. POPF 标志出栈. PUSHD 32位标志入栈. POPD 32位标志出栈. 二、算术运算指令 ─────────────────────────────────────── ADD 加法. ADC 带进位加法. INC 加 1. AAA 加法的ASCII码调整. DAA 加法的十进制调整. SUB 减法. SBB 带借位减法. DEC 减 1. NEC 求反(以 0 减之). CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). AAS 减法的ASCII码调整. DAS 减法的十进制调整. MUL 无符号乘法. IMUL 整数乘法. 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整. DIV 无符号除法. IDIV 整数除法. 以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算). AAD 除法的ASCII码调整. CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令 ─────────────────────────────────────── AND 与运算. OR 或运算. XOR 异或运算. NOT 取反. TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). SHL 逻辑左移. SAL 算术左移.(=SHL) SHR 逻辑右移. SAR 算术右移.(=SHR) ROL 循环左移. ROR 循环右移. RCL 通过进位的循环左移. RCR 通过进位的循环右移. 以上八种移位指令,其移位次数可达255次. 移位一次时, 可直接用操作码. 如 SHL AX,1. 移位>1次时, 则由寄存器CL给出移位次数. 如 MOV CL,04 SHL AX,CL 四、串指令 ─────────────────────────────────────── DS:SI 源串段寄存器 :源串变址. ES:DI 目标串段寄存器:目标串变址. CX 重复次数计数器. AL/AX 扫描值. D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量. Z标志 用来控制扫描或比较操作的结束. MOVS 串传送. ( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ) CMPS 串比较. ( CMPSB 比较字符. CMPSW 比较字. ) SCAS 串扫描. 把AL或AX的内容与目标串作比较,比较结果反映在标志位. LODS 装入串. 把源串中的元素(字或字节)逐一装入AL或AX中. ( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) STOS 保存串. 是LODS的逆过程. REP 当CX/ECX<>0时重复. REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复. REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复. REPC 当CF=1且CX/ECX<>0时重复. REPNC 当CF=0且CX/ECX<>0时重复. 五、程序转移指令 ─────────────────────────────────────── 1>无条件转移指令 (长转移) JMP 无条件转移指令 CALL 过程调用 RET/RETF过程返回. 2>条件转移指令 (短转移,-128到+127的距离内) ( 当且仅当(SF XOR OF)=1时,OP1<OP2 ) JA/JNBE 不小于或不等于时转移. JAE/JNB 大于或等于转移. JB/JNAE 小于转移. JBE/JNA 小于或等于转移. 以上四条,测试无符号整数运算的结果(标志C和Z). JG/JNLE 大于转移. JGE/JNL 大于或等于转移. JL/JNGE 小于转移. JLE/JNG 小于或等于转移. 以上四条,测试带符号整数运算的结果(标志S,O和Z). JE/JZ 等于转移. JNE/JNZ 不等于时转移. JC 有进位时转移. JNC 无进位时转移. JNO 不溢出时转移. JNP/JPO 奇偶性为奇数时转移. JNS 符号位为 "0" 时转移. JO 溢出转移. JP/JPE 奇偶性为偶数时转移. JS 符号位为 "1" 时转移. 3>循环控制指令(短转移) LOOP CX不为零时循环. LOOPE/LOOPZ CX不为零且标志Z=1时循环. LOOPNE/LOOPNZ CX不为零且标志Z=0时循环. JCXZ CX为零时转移. JECXZ ECX为零时转移. 4>中断指令 INT 中断指令 INTO 溢出中断 IRET 中断返回 5>处理器控制指令 HLT 处理器暂停, 直到出现中断或复位信号才继续. WAIT 当芯片引线TEST为高电平时使CPU进入等待状态. ESC 转换到外处理器. LOCK 封锁总线. NOP 空操作. STC 置进位标志位. CLC 清进位标志位. CMC 进位标志取反. STD 置方向标志位. CLD 清方向标志位. STI 置中断允许位. CLI 清中断允许位. 六、伪指令 ─────────────────────────────────────── DW 定义字(2字节). PROC 定义过程. ENDP 过程结束. SEGMENT 定义段. ASSUME 建立段寄存器寻址. ENDS 段结束. END 程序结束. |
|
|
|
|
|
|
|
|
|
|
|
汇编语言程序设计--笔记
1.6.3 寄存器寻址 寄存器寻址:到寄存器里寻址的方式。寄存器寻址的方式执行速度是最快的。 其中MOV DI,2050H中,2050H是立即数寻址,DI是寄存器寻址。 错误指令分析: MOV AL,BX:源操作数是16bit,目的操作数8bit MOV SP,CH: 将CH是8bit的寄存器送入16bit寄存器SP里,也是不匹配的。 |
|
汇编语言程序设计--笔记
1.6.2.1 指令的注意事项和错误的指令分析 MOV 05H,AL:这条错误指令的意思是将AL里的内容送入05H里。 错误点:05H是一个立即数,立即数是永远不能做‘目的操作数’的,只能做‘源操作数’。 MOV BL,324D:这条错误指令的意思是将324D送入BL寄存器里。 错误点:324D是一个十进制数,而要BL是一个8bit的寄存器(划成十进制数范围是0-255),把一个字节,放不下的数放进另外一个字节,这是不行的。很典型的一个源操作数与目的操作数类型不匹配范例。 MOV CH,2050H: 错误点:CH是一个8bit寄存器(划为十进制数范围是0-255),和MOV BL,324D一个病例。 MOV DL,‘25’:这条错误指令的意思是将‘2’的ASCII码和‘5’的ASCII码送入DL寄存器里。 错误点:DL是一个8bit寄存器,‘25’(两个数ASCII码是2个字节),所以也放不进去。 |
|
|
|
|
|
汇编语言程序设计--笔记
1.6 8086的寻址方式目录 ***************天生笨才也有聪明方法******************** 我又重新温习了前面的东西,学习的过程真的很累,略显疲惫了。尤其是在“数字和公式”面前,显得力不从心,甚至要发疯。 这个问题和很多朋友遇到的情况一样,但我只能说明一点(和我同类型的朋友)---即使再累再疲惫,也千万别放弃,以后会轻松很多。 先 实践 后理论 ;先理论 后实践;边实践边理论。。。。(它们既有先后顺序、也可并行操作、更可多种组合) 实践和理论相结合是最好的回答!因为这两个词不论你是如何组合,最终的目的是为了体现学习的过程实现学习的最终目标。因人而宜、因人而定、因人而制(治)。 而我呢,文字图形逻辑脑细胞数量相对于其他脑细胞数量而言,文字图形逻辑脑细胞数多些,接受理论知识(概念、分类、表现形式、作用、图形、列表等等)的基本组成结构,快些。 所以我选择的是“理论、实践、理论、再理论、实践、再实践、理论”。 两词的组合结构里,“理论”一词多些,所以在实践的过程中,我出错的机会小,而接受深的东西就显得容易了。因为我追求准确无误的高标准,所以我在学习的过程中,耐心、毅力也随时间变化而变化。 缺点:效率低,准确的说在学习的一开始是这样的。(因为我1。没有相应的工具2.实际操作水平也太差了。3.没人带我) |
|
汇编语言程序设计--笔记
(作者不详 由诸暨人民广播电台供稿www.zhuji.net ) ******怎么开发大脑记忆力(全像思维)****** 在过去的二、三十年中, 有大量的实践研究企图解开人类左右两边脑部分别掌管的是怎样的功能的秘密.结果证明左 半部是语言控制中心,以逻辑性,时间性的思考运用;而右半部似乎掌管着意念、印象等整体图形等直觉的反应思考模式 .基本上这个二分法的大脑运作,在近年西方全像的理论是早己被推翻了,但是,为了让学习者了解一些理论性的探讨, 也只好将左,右脑分别来讨论其功能。 __让我们举一个生活例子来说:不知您是否有过如此的经验,某天在百货公司 或是街头上闲逛或是shopping时,突然一个熟悉的身影从旁而过,一时之间,你怎么了吗?是不是想不起他的名字,但 是你确定自己一定认识他;另外,我们常参加高中,国中时期的同学会时,有没有这样的经验了?一时之间又叫不出同 学的名字,但是那似曾相识的脸蛋,让你肯定知道,他是你的同学。 __这代表什么意思吗?右脑掌管着图像记忆功能, 所以你很有效率的搜寻到过去十几年前同学的画面(长像),但一时却又找不到左脑掌管的逻辑,推理的庞杂的数据库 中的同学名字;从例子中,可以很明确的知道,右脑的图像学习的效应是十分快而不易忘记.所以,从坊间的许多的学 习法中,而窥伺得知,皆是利用右脑的理论来利用图形及图片的记忆上或是透过情境的想象连接来帮助学习上的记忆效 果,尤其是在英文与幼儿教育领域中的应用范围更是广泛。 __但是实际上,这不过是利用右脑原本的记忆功能来应用, 只是人们大都不知道如何来强化及使用我们自己的大脑的应用吧了!而且,就以全像的理论来说,这也只是一小部分的 应用于记忆的一个方法,而非做到全脑的真正开发及使用。 __{因为,大脑的应用发展是不该区分于左右两脑的差异, 而应该是如何整合其全脑的应用,而图像思维就是如此,透过右脑的图像记忆效应来思索左脑的分析和决策,这才是全 像思维,而非仅是记忆效果。} |
|
汇编语言程序设计--笔记
我在学习的过程中遇到了和大家同样的问题,一个很普遍的问题---记忆力偏差。对于想要记住的东西,需要好多遍来强行记忆,可过些天记忆又开始模糊不清了,可总是反复记忆也不很有效的办法,所以我决定去寻找一种科学的增强记忆力的方法,终于找到了!现把方法提供给大家,做以参考: (摘自http://ajy.ssjy.cn 作者不详,请来信通知) *******************大脑记忆力训练法******************** 据意大利《晚邮报》报道,意大利一所大学三名教授进行了这样的一项实验:他们挑选了一位记忆中等的青年学生,让他每星期接受三至五天,每天一小时,背诵由三个数至四个数组成的数字训练。每次训练前,他如果能一字不差地背诵前次所记的训练。就让他再增加一组数字。经过二十个月约二百三十小时的训练,他起初能熟记七个数,以后增加到八十个互不相关的数,而且在每次练习时几乎能记住80%的新数字,使得他的记忆力能同一些具有特殊记忆力的专家媲美。 可见,记忆力通过训练的确可以提高。事实上,古今中外的许多名人学者都通过各种方法来锻炼自己的记忆力。马克思从少年时代开始,坚持不断地用一种自己不太熟悉的外语去背诵诗歌,有意识地锻炼记忆力;列夫.托尔斯泰也是采用背诵的方式锻炼记忆力。他说:"背诵是记忆力的体操。"每天早晨,他都严格要求自己强记一些单词或其他方面的东西,以增强记忆力。宋代词人李清照采用与丈夫比赛竞猜某典故出自某书的方式,在兴趣盎然的娱乐中,巩固了知识,增强了记忆。 专门研究锻炼记忆力方法的美国学者布鲁诺.弗斯特说:"要具备一个可靠的记忆力,必须每天费一刻钟到半个小时的时间,做一套有计划的脑力练习,复杂的或简单的均可,只要能迫使口口你去动脑筋。" 下面给大家介绍几种行之有效的记忆力训练方法: (1) 积极暗示法 许多人之所以记忆力不佳,是由于对自己的记忆力缺乏自信。在面对一个要记的材料时,这些人常常想:"多难记啊!","这么多,我能记住吗?"这种想法是提高记忆力的最大障碍。 美国心理学家胡德华说:"凡是记忆力强的人,都必须对自己的记忆充满信心。"要想树立起这种信心就要进行积极的自我暗示,经常在心中默念:"我一定能记住!"。当你对能否记住缺乏信心时,也可以回忆自己过去的成功经验,如"我曾在全班各科考试成绩排前五名""我几岁的时候就能背许多唐诗"。当这些过去良好的记忆形象再次浮现时,会增强你"一定能记住"的信心。 (2) 精细回忆法 我们在平时的学习和生活中,识记了很多东西,却很少去回忆。识记和回忆之间的不平衡,使我们的记忆变得十分模糊。 经常回忆,回忆得尽可能精细,是锻炼记忆力的好方法。比如: 回忆一间你非常熟悉的房间,想一想房间里都有什么?门窗朝哪开?家具都摆放在哪里?墙上挂有哪些装饰品?暖气片和电灯开关在什么地方?等等。要回忆得尽量完整无缺。当你再次回到到间时,检查一下你遗漏了什么。 想一想一小时前你在做什么?你在哪里?和什么人在一起?你们在一起都说了什么?那个人长得什么样?你如何向别人描述他的长相? 回忆一下你最近看过的电影,电影里都有哪些主要人物?发生了什么事?他们都做了什么?结局如何?要尽可能回想电影中每一个镜头。 回忆一下你童年的伙伴,你们在一起都做过什么?还能记起他们的名字吗?他们的家都住在什么地方? (3) 奇特联想法 联想是促进记忆的一种方式。比如,我们遇到一个生字:咩。该字由口和羊组成,口即嘴,羊的嘴,除了吃草,还会叫。羊怎么叫"咩……"字义出来了,字音也知道。咩,羊叫之声,读MIE。 奇特联想是联想的一种则将要记的东西在头脑中人为地形成一定衡奇古怪的联想,从而帮助记忆。比如,要想记住"狗--自行车"这对词,我们可以想象"狗骑着自行车在马路上逛来逛去"。有人要记"火车、河流、风筝、大炮、鸭梨、黄狗、闪电、街道、松树、高粱"共十个词,他形成如下奇特联想:一个人登上了高速的火车,火车在河流上奔驰,河流上飘来一个大风筝,风筝上架着一门大炮,大炮的炮筒里打出来一个大风筝,风筝上架着陆门大炮,大炮的炮筒里打出来一只鸭梨,鸭梨打进黄狗的嘴里,黄狗像一道闪电,迅速地路过街道,爬上一棵老松树,咬住了老松树上长着的一棵高粱。 (4) 限时强记法 在规定的时间里去背诵一些数字、人名、单词等等,可以锻炼博闻强记的能力。比如: 在3分钟内,背诵圆周率()小数点后30位数字:3.141592653589793238462643383279; 在2分钟内,背诵十个陌生的人名; 在10分钟内,背诵十个外文生词。 (5) 记忆保健操 在头颈后部找到"天柱"、"风池"二穴,将两手交凡于脑后,用拇指的指腹腔按压这两个穴位,每次按压5秒钟,突然加压,然后将拇指移开,按压5至10次后,会感到头脑清醒。 (摘自:北京晚报 http://www.lzisti.net.cn/) ************多吃苹果西红柿增强大脑记忆力**************** 据法新社报道,英国伦敦大学的伦敦国王学院科学家今天在曼彻斯特举行的英国皇家制药学会学术会议上发表论文指出,吃花椰菜、西红柿、柑橘、苹果和萝卜等5种水果蔬菜可能对增强脑力、防止阿尔茨海默氏病即早老性痴呆症有利。 目前治疗阿尔茨海默氏病的大多数药品中都含有能抑制乙酰胆碱脂酶的物质,乙酰胆碱脂酶能破坏人脑神经信息传送。伦敦国王学院科学家发现,从这5种水果蔬菜中提取出来的物质含有抗乙酰胆碱脂酶的物质,其中花椰菜含量最多,科学家正准备对花椰菜进行深入的研究。 |
|
|
|
|
|
|
|
|
|
汇编语言程序设计--笔记
1.5.3.2.5 地址的唯一性 1.5.3.2.6 涉及分段的其他问题 附图: 段地址和偏移地址的概念: 由于8086 CPU的寄存器只有16位,而地址线有20根,为使用16位的寄存器访问20位的内存地址(访问内存时,大多情况下需将内存地址放到寄存器中),8086 CPU将1M内存分成多个段(Segment)。每个段有自己的段起始地址(简称段地址,16位宽),每个段的最大长度为64K。当我们访问一个内存单元时,必须告诉CPU所访问的内存单元的段地址以及该单元距段首的距离(多少字节),该距离称为段内偏移地址(简称偏移量,Offset,16位宽)。离开段地址,孤立地谈偏移地址是没有任何意义的。在同一个段内,偏移量的变化范围是0000H~FFFFH。 为表示方便,8086规定,内存地址的表示方法为:16位段地址:16位偏移地址。其转换为20位物理地址的公式规定如下: 20位物理地址=16位段地址左移4位 + 16位偏称地址 注:由于左移4位后,段地址的低4位一定是0H,所以一个段的起始物理地址一定是xxxx0H的形式。 例如1A2B:5DF2对应的20位物理地址是200A2H: 1A2BH->左移4个二进制位->1A2B0H + 5DF2H = 200A2H 显然,表示同一个物理地址时可以有近64K种段地址和偏移量的组合。例如2000:00A2和200A:0002都表示同一个物理地址200A2H。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值