汇编语言大后天考试,原谅我忍不住写博客

好多问题必须深入地说一下,当然以下是我默写的:

1.在冯·诺曼依体系中,我们知道计算机组成最重要的五个部分是运算器、控制器、存储器、输入输出接口和输入输出设备。其中运算器和控制器合称中央处理器,即CPU。计算机的硬件之间通过总线进行连接,其中地址总线是单向的,由CPU指向存储器、输入输出接口,数据总线和控制总线是双向的。

2.计算机中的数据分为有符号数和无符号数。有符号数会在存储单元中额外拿出最高位作为符号位,因此机器数长为n的有符号数,其机器数的真值范围仅是无符号数的一半。机器数的原码、补码和反码符号是不变的,因此在后面的有符号数的右移中,最高位需要一直保持下去。而在机器数的原码、补码和反码的讨论中,大多应是讨论负数的。只需要保持最高位的符号,取反就是把后面的位0/1互换,取补就是取反完毕之后进行+1操作。正数和零原码、反码和补码相同即可。在补码的运算中,有符号数要看O标志判断是否结果有效,无符号数看C标志。原因无非是数值超出-127~127之后,无法正确表示的原因。在代码中,NEG即为求补指令。

3.在微机中使用ASCLL码,30~39H表示0~9,41~46H表示A~F,0AH表示换行(LF),0DH表示回车(CR)。

4.在80x86微处理器中,有8位、16位和32位的基本体系结构寄存器。从寻址角度来说,因物理地址的表示上需要使用逻辑地址,即段基址:偏移地址,所谓段基址就是逻辑段的基址,偏移地址表示形式多样。当然了,顺便先提一下,如果寻址的时候,直接给了数值、字符或者表达式,则为立即寻址。如果寻址的时候直接是单个的寄存器,则为寄存器寻址。而如果采用段基址:偏移地址,即寻址时使用物理地址,则为存储器寻址。其中,逻辑段有CS、DS、ES、SS,段后直接为[偏移地址数值]或变量名,则为直接寻址。段:[通用寄存器中的指针BP和三变址寄存器DI、SI、BX]时,为间接寻址/寄存器间接寻址/间址。如果为段基址:[BP/BX+位移量]则为基址寻址,换成DI/SI+位移量则为变址寻址,换位基址之一+变址之一+位移量则为基址加变址寻址。在寄存器中的指针有三个,除了表示段基址的BP和栈顶指针SP,还有与CS结合使用的IP。还有很多有用的通用寄存器,如CX用于循环次数的设定,AX常用语DATA数据转移到DS的容器。尤其是标志寄存器FLAG中的6个状态标志和3个控制标志,更是重中之重,如标志寄存器中状态标志的值常常是代码运行中执行中断的契机,A标志和C标志是执行加减时是否使用ADC和SBB修正的决定者。使用POPF/PUSHF可用于标志寄存器进/出栈,POPA/PUSHA可用于十六位通用寄存器进/出栈。

5.个人感受,代码运行中转移指令的意义在于跳过一些步骤,调用指令则用于多运行一些步骤。子程序会让代码简洁,宏定义却只是表面简洁。

ADD,12.7

1.80486有32根地址线,可寻址4GB的存储单元;有32根数据线,这意味着CPU和存储器、I/O端口每一次可传输4B的数据。 微型计算机的存储器以字节为单元。

2.负数如-66的原码机器数为10110011,保留符号位其他位按位取反加1即求补后为11001101。也可先找到其绝对值的补码为00110011,对其进行按位所有位取反加,为11001101。

3.32位处理器有3种工作模式:实地址模式、保护虚拟地址模式和虚拟8086模式。

4.32位微处理器的地址空间里,存储地址空间分为物理空间、虚拟空间和线性空间。物理空间80486为4GB,虚拟空间可达2^46B(64TB);输入输出地址空间00000000H~0000FFFFH,为64KB。

5.指令是CPU操作的基本单位,是单个CPU操作,每条指令执行一个特定的操作。指令编码为二进制的序列成为机器指令。

6.标号表示该条指令的符号地址,在分支或循环等指令的转移目标或程序开始执行的首条语句需要设置标号。具有三个属性:段属性、偏移属性和类型属性。

7.开发应用程序的步骤:编辑为.asm,编译为.obj,链接为可执行文件.exe/.com

8.指令性语句即为符号指令,指示性语句分为伪指令和宏指令。

9.变量定义在DS、SS和ES中,表示逻辑段中的存储单元。

6.MOV BX,OFFSET BUF 和LEA BX,BUF作用相同。

7.在DOS功能调用中,0A功能是用于从键盘处读取字符,存入DX中所存的偏移地址所指向的变量,INT 21H执行后,输入回车符后,功能调用结束,0DH存在缓冲区中。

猜你喜欢

转载自blog.csdn.net/qq_37865996/article/details/84842576
今日推荐