王爽汇编学习之作业记录第一章节至第二章节

开始学习王爽版汇编,致于为什么要学习,这些在此就不多谈了,如想了解软件安全,逆向工程等等,汇编是必不可少的。
一,第一章基础知识
例如:机器指令1000100111011000表示把寄存器BX的内容送到AX中.汇编指令则写成MOV AX,BX。 这样的写法与人类语言接近,
便于阅读记忆。
寄存器:简单地讲是CPU中可以存储数据的器件,一个CPU中有多个寄存器,AX是其中一个寄存器的代吗,BX是另一个寄存器的代号。
编译器:是能把汇编指令转换成机器指令的翻译程序,这样的程序我们称其为编译器。
汇编语言的组成,具体有3类指组成:
      1,汇编指令:机器码的助记符,有对应的机器码。
      2,伪指令: 没有对应的机器码,由编译器执行,计算机并不执行。
      3,其他符号:如“加减乘除" 等,由编译器识别,没有对应的机器码。
汇编语言的核心:是汇编指令,它决定了汇编语言的特生。
指令和数据在内存或磁盘上存储没有任何区别,都是以二进制信息,CPU工作的时间把有的信息看作指令,有的信息看作数据。
1000100111011000         ->89D8H 数据
1000100111011000         ->MOV AX,BX 程序

1.1~1.10小结
1,汇编指令是机器指令的助记符,同机器指令一一对应。
2,每一种CPU都有自已的汇编指令集。
3,CPU可以直接使用的信息存放在存储器中。
4,在存储器中指令和数据没有任何区别,都是二进制信息。
5,存储单元从零开始顺序编号。
6,一个存储单元可以存储8个bit,即8位二进制数。
7,1Byte=8bit  1KB=1024B 1MB=1024KB 1GB=1024MB
8,每一个CPU芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个CPU可以引出3种总线的宽度标志了这个CPU的不同方面的性能:
地址总线的宽度决定了CPU的寻址能力;
数据总线的宽度决定了CPU与其他器伯进行数据传送时一次数据传送量;
控制总线的宽度决定了CPU对系统中其他器件的控制能力。
检测点1.1
1,1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13. 2的13次方
假设地址总线宽度为N,则2的N次方=CPU的寻址能力(单位byte,计算机最小存储单元,1个byte=8个bit/二进制位
一次传送2的N次方,一次为0-1023B  8*1024=8192
2,1KB的存储器有1024B个存储单元。存储单元的编号从0到1023。
3,1KB的存储器可以存储1024*8个bit, 1024byte
4,1GB,1MB,1KB分别是 1024*1024*1024,1024*1024,1024byte
5,(2^16)/1024,(2^20)/1024/1024,(2^24)/1024,(2^32)/1024/1024/1024
6,8080,8088,8086,80286,80386的数据总线宽度分别为8根,8根,16根,16根,32根,则它们一次可以传送的数据为1B,1B,2B,2B,4B
(8根一次传送1byte=8bit)
7,从内存中读取1024字节的数据,8086至少读(一次2B)1024/2=512次,(80386一次4B)1024/4=256次
8,在存储器中,数据和程序以二进制形式存放。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
二,第二章 寄存器
检测点
2.1
  1,写出每条汇编指令执行后相关寄存器中的值。
MOV ax,62627     AX=F4A3H    //按要求输入后会报错,因为是10进制,需转换为16进制F4A3
MOV AH,31H       AX=31A3H
MOV AL,23H       AX=3123H
ADD AX,AX         AX=6246H
MOV BX,826CH   BX=826CH
MOV CX,AX        CX=6246H
MOV AX,BX         AX=826CH
ADD AX,BX         AX=04D8H
MOV AL,BH        AX=0482H
MOV AH,BL        AX=6C82H
ADD AH,AH       AX=D882H
ADD AL,6          AX=D888H
ADD AL,AL        AX=D810H
MOV AX,CX        AX=6246H
2,只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方
MOV AX,2
ADD AX,AX
ADD AX,AX
ADD AX,AX

检查点2.2
1,给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为0001H x 16+0=10H到0001Hx16+FFFFH=1000FH.  
2.有一数据存放内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为1001H,最大为2000H.  
最小为:1001H(20000H>1000Hx16+FFFFH,20000H<1001Hx16+FFFFH)  
最大为:2000H(2000Hx16=20000H)
提示,反过来思考一下,当段地址给定为多,CPU无论怎么变化偏移地址都无法寻到20000H单元?

检查点2.3
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
MOV AX,BX
SUB AX,AX
JMP AX
答:
第一次执行MOV AX,BX IP=0100  
第二次执行SUB AX,AX IP=0102
第三次执行JMP AX IP=0104
最后IP=0104

此题,应该是执行了四次,最后一次为0

你可能感兴趣的:(汇编语言(第二版)王爽)