1、 (8) 00000010 = 2D5、(1) 0 = 0 0000 0000 原 = 0 0000 0000 反 = 0 0000 0000 补 (2) -127 = 1 1111 1111 原 = 1 0000 0000 反 = 1 0000 0000 补(3) 127 = 0 1111 1111 原 = 0 1111 1111 反 = 0 1111 1111 补(4) -57 = 1 0011 1001 原 = 1 1100 0110 反 = 1 1100 0111 补(5) 126 = 0 1111 1110 原 = 0 1111 1110 反 = 0 1111 1110 补(6) -
2、126 = 1 1111 1110 原 = 1 0000 0001 反 = 1 0000 0010 补(7) -128 = 1 0000 0000 补,无原码和反码(8) 11947超出8位二进制表示范围,无原、反、补码6、(1) -1 = 1 0000 0000 0000 0001 原 = 1 1111 1111 1111 1110 反 = 1 1111 1111 1111 1111 补 (2) -10 = 1 0000 0000 0000 1010 原 = 1 1111 1111 1111 0101 反 = 1 1111 1111 1111 0110 补(3) 845 = 0 0000 0
3、011 0100 1101 原 = 0 0000 0011 0100 1101 反 = 0 0000 0011 0100 1101 补(4) -923 = 1 0000 0011 1001 1011 原 = 1 1111 1100 0110 0100 反 = 1 1111 1100 0110 0101 补(5) 100 = 0 0000 0000 0110 0100 原 = 0 0000 0000 0110 0100 反 = 0 0000 0000 0110 0100 补(6) 15000 = 0 0011 1010 1001 1000 原 = 0 0011 1010 1001 1000 反
4、= 0 0011 1010 1001 1000 补7、(1) -1 = 1 0000 0000 0000 0000 0000 0000 0000 0001 原 = 1 1111 1111 1111 1111 1111 1111 1111 1110 反 = 1 1111 1111 1111 1111 1111 1111 1111 1111 补 (2) -10 = 1 0000 0000 0000 0000 0000 0000 0000 1010 原 = 1 1111 1111 1111 1111 1111 1111 1111 0101 反 = 1 1111 1111 1111 1111 1111
5、 1111 1111 0110 补(3) 23 = 0 0000 0000 0000 0000 0000 0000 0001 0111 原 = 0 0000 0000 0000 0000 0000 0000 0001 0111 反 = 0 0000 0000 0000 0000 0000 0000 0001 0111 补(4) -100 = 1 0000 0000 0000 0000 0000 0000 0110 0100 原 = 1 1111 1111 1111 1111 1111 1111 1001 1011 反 = 1 1111 1111 1111 1111 1111 1111 1001
6、 1100 补8、(1) B64AH = 1011 0110 0100 1010B = -13898D (2) F3E1H = 1111 0011 1110 0001B = -29665D (3) 6F20H = 0110 1111 0010 0000B = 28448D (4) 00E1H = 0000 0000 1110 0001B = 225D9、(1) 1000B64AH = 0001 0000 0000 0000 1011 0110 0100 1010B = 268482122D (2) 98C2417DH = 1001 1000 1100 0010 0100 0001 0111 1
7、1O1B = -415383933D (3) FFFFFE03H = 1111 1111 1111 1111 1111 1110 0000 0011B = -2147483139D (4) 0000F3E1H = 0000 0000 0000 0000 1111 0011 1110 0001B = 62433D10、(1) 1011+1001 = 1100 (进位1) (2) 1011-1001 = 0010 (3) 10111001 = 1100011 (4) 10111001 = 10100 (余数100) (5) 10111001 = 1001 (6) 10111001 = 1011 (
8、7) 1011 = 0100 (8) 10111001 = 001011、答:8位二进制数表示的无符号数范围为0255,16位数为065535,32位数为04294967295。12、答:16位补码表示有符号数的范围为3278232783,32位补码表示的有符号数范围为21474836472147483648。13、答:数码09的ASCII码为30H39H,AZ的ASCII码为41H5AH,az的ASCII码为61H7AH,。ASCII码0DH对应回车符CR,0AH对应换行符LF。14、答:01100001为无符号数时代表十进制的97,BCD码的61,ASCII码的小写字母a15、答:进位是指
9、当二进制运算结果的最高有效位有进位(加法)或借位(减法)时,产生进位。对于n 位二进制数表示的无符号数来说,如果运算结果超出了02 n 1的范围,就产生进位或借位。溢出是指处理器内部以补码形式表示有符号数,对于n 位二进制补码表示的有符号数来说,如果运算结果超出了2n-12n-11 的范围,就产生溢出。有溢出,说明有符号数的运算结果不正确。二者的区别在于进位表示无符号数运算结果是否超出n 位二进制数表示的无符号数范围,如果超出该范围则产生进位,但运算结果仍然正确;而溢出表示有符号数运算结果是否超出n 位二进制数表示的有符号数范围,如果如果超出该范围则产生溢出,运算结果不正确。16、(1) 00
10、3FH + 02A4H = 0101 0010 1110 1000B = 02E3H,无进位,无溢出(2) 1B48H + 39E1H = 0101 0101 0010 1001B = 5529H,无进位,无溢出(3) 6C34H + 5028H = 1011 1100 0101 1100B = BC5CH,无进位,有溢出(4) 7FFEH + 0002H = 1000 0000 0000 0000B = 8000H,无进位,有溢出(5) FF07H + 06BDH = 0000 0101 1100 0100B = 05C4H,有进位,无溢出(6) 2A44H + D9CCH = 0000 0
11、100 0001 0000B = 0410H,有进位,无溢出(7) FFE3H + FC70H = 1111 1100 0101 0011B = FC53H,有进位,无溢出(8) FE00H + FD2DH = 1111 1011 0010 1101B = FB2DH,有进位,无溢出(9) FFF1H + 8005H = 0111 1111 1111 0110B = 7FF6H,有进位,有溢出(10) 8ADCH + EC78H = 0111 0111 0101 0100B = 7754H,有进位,有溢出(11) 9E58H - EBBCH = 1011 0010 1001 1100B = B
12、29CH,有借位,无溢出(12) EBBCH - 9458H = 0101 0111 0110 0100B = 5764H,无借位,有溢出(13) EBBCH - 791CH = 0111 0010 1010 0000B = 72A0H,无借位,无溢出(14) 791CH - EBBCH = 1000 1101 0110 0000B = 8D60H,有借位,无溢出习题21、答:IA32-CPU共有8 个32 位通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP,它们分别是16 位CPU 中8 个16 位寄存器的扩展。每一个32 位的通用寄存器的低半部分是一个16 位寄存
13、器: AX、BX、CX、DX、DI、DI、SP、BP,而16 位寄存器AX、BX、CX、DX 又分别分为高低两个8 位寄存器:AH/AL,BH/BL,CH/CL,DH/DL。32位通用寄存器的作用分别为:EAX称为累加器,使用频度最高,用于在算术、逻辑运算中保存操作数或中间运算结果,保存与外设交换的信息。EBX称为基址寄存器,常用于存放存储器地址,一般是指向DS 段中数据的指针。ECX称为计数器,在循环指令和串操作指令中用作隐含计数器。EDXIO 端口的指针;常用于外设寻址时提供端口地址。ESI源变址寄存器,串操作的源操作数指针(DS 段)。EDI目的变址寄存器,串操作的目的操作数指针(ES
14、段);在串指令中,ESI 与DS连用、EDI 与ES 连用,分别寻址数据段和附加段;同时,在串指令中,ESI 和EDI 还都具有自动增量或减量的功能。EBP为基址指针寄存器,表示堆栈段中的基地址。ESP为堆栈指针寄存器,指示栈顶的偏移地址。16位寄存器的作用为:AX16位累加器。BX基址寄存器。CX计数器。DX数据寄存器。BP基址指针。SP堆栈指针。SI源地址寄存器。DI目的地址寄存器。8位寄存器均为数据寄存器。2、答:标志用于反映指令执行结果或控制指令执行方式。状态标志用来纪录程序执行结果的状态信息,许多指令的执行都将相应地设置状态标志。控制标志用来控制处理器执行指令的方式,可由程序根据需要
15、用指令设置。状态标志:CF进位标志(Carry Flag)。当算术运算时,最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。ZF零标志(Zero Flag)。若运算结果为0,则ZF = 1,否则ZF = 0。SF符号标志(Sign Flag)。运算结果的最高有效位就是符号标志的状态。即运算结果最高位为1,则SF = 1;否则SF = 0。PF奇偶标志(Parity Flag)。当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 0。OF溢出标志(Overflow Flag)。如果有符号整数运算的结果超出目的操作数表示范围时,则产生溢
16、出,OF = 1;否则OF0。AF辅助进位标志(Auxiliary Carry Flag)。运算时D3 位(低半字节)有进位或借位时,AF = 1;否则AF = 0。控制标志:DF方向标志(Direction Flag)。该标志用于串操作指令中,控制地址的变化方向。系统标志:IF中断允许标志(Interrupt-enable Flag)。该标志用于控制外部可屏蔽中断是否可以被处理器响应。TF陷阱标志(Trap Flag),也常称为单步标志。该标志用于控制处理器是否进入单步操作方式。NT(D14)任务嵌套标志(Nested Task)。用来表明当前执行的任务是否嵌套于另一个任务中。IOPL(D1
17、3D12)I/O 特权级标志位(I/O Privilege Level),共2 位,编码表示4个特权级别,用来指定任务的I/O 操作处于4 个特权级别的哪一级。VM(D17)虚拟8086 模式标志(Virtual 8086 Mode)。RF(D16)恢复标志(Resume Flag),与调试寄存器一起使用。AC(D18)对齐检测标志(Alignment Check)。表明是否在存储器访问时进行数据对齐检测。VIF(D19)虚拟中断标志(Virtual Interrupt Flag)。IF 中断允许标志的虚拟影像,与VIP 连用。VIP(D20)虚拟中断挂起标志(Virtual Interrup
18、t Pending)。此标志置位指示有一个中断被挂起。ID(D21)CPU 识别标志(Identification Flag),表明该微处理器是否支持CPU 识别指令CPUID。(少EFLAGES的图)3、答:字和双字在存储器中占据相邻的两个或四个存储单元。存放时,低字节存入低地址,高字节存入高地址,字或双字的地址用它的低地址来表示,这种“低对低,高对高”的存储形式称为“小端方式”。字的对齐地址在偶地址(0B),双字的对齐地址在模四地址(能被四整除的地址,即00B)。使用对齐地址的数据,处理器对他们的访问速度较高。4、答:每个存储器单元的唯一寻址地址称为该单元的物理地址。在寻址一个具体物理单元
19、时,必须要由一个基地址加上一个偏移量来形成实际的20位物理地址,这种“段地址:偏移地址”的形式称为逻辑地址。在形成20位逻辑地址时,段寄存器中的16位数自动左移4位,然后与16位偏移量相加,得到20位物理地址。(1) FFFh:0 = FFF0h (2) 40H:17H = 417H (3) 2000H:4500H = 24500H (4) B821H:4567H = BC777H5、答:在实模式下,段寄存器中存放的是段基地址,即逻辑段在主存中的起始位置。而在保护模式下,段寄存器中存放的是一个16位的段选择器,其高13位是段描述符索引,用来指示描述符在描述符表中的序号,D2位是描述符表引用指示
20、位TI,最低两位是请求特权级RPL,用于特权检查。6、答:段选择器用来指明所用段的段描述符等信息。段描述符对应与某个特定的段,其中定义了段基地址、界限和访问类型等段属性。为了便于组织管理,段描述符被组织成线性表的形式,这就是描述符表。三者之间关系密切,在段选择器中存放的是段描述符,而描述符表则是段描述符组成的线性表。7、答:在实模式和虚拟8086 模式下,IA-32 CPU 用于寻址内存空间的地址线是20 位,所以内存的寻址空间是1MB,地址从00000H-FFFFFH。处理器在1MB 空间中只能执行一个程序,此时存储器管理模型只能采用实地址模型,该模型与16 位CPU 的存储器管理模型兼容。
21、保护模式下,有32 条地址线寻址内存,处理器可以同时执行多个程序,并且为每个程序分配4GB 的内存空间;此时存储器既可以使用分段模型、分页管理,又可以使用段页式管理,还可以使用平展模型。8、答:数据的默认段是DS,其他段也可以存放数据。当需要将数据放入其他段时,只需要使用段超越前缀明确指明使用的是哪个段即可。9、答:IA-32CPU的内存空间为4GB。10、答:程序员对组成外设与系统连接的I/O接口寄存器的编号,形成了I/O地址,通常称其为I/O端口。端口的地址编码有两种方式:独立编址和与存储器统一编址。前者是将外设端口单独编排地址,独立于存储器地址。后者将外设端口与存储器地址统一编排,共享一
22、个地址空间,即外设端口要使用一部分内存空间。此时的处理器不再区分外设和内存的访问。习题3不产生CPU动作的说明性工作,并在程序执行前由汇编程序完成处理的指令称为伪指令,而那些使CPU产生动作并在程序执行时才处理的语句称为硬指令。伪指令通常用来指示会变成程序如何汇编源程序。汇编语言中的标识符包括标号和名字。标号出现在执行性语句中,用来反映该指令的逻辑地址。名字出现在说明性语句中,它可以是变量名、段名、子程序名或宏名等,既反映逻辑地址又具有自身的各种属性。标识符一般最多由31个字母、数字及规定的特殊符号组成,不能以数字开头且不能是汇编语言采用的保留字。保留字就是在汇编语言中具有特定含义的字符串。汇
23、编语言的保留字(Reserved Word)主要有硬指令助记符、伪指令助记符、运算符、寄存器名以及预定义符号等。例如mov、ds、等。汇编语句分为执行性语句与说明性语句两类。前者由标号、硬指令助记符、操作数和注释组成,后者由名字、伪指令助记符、参数和注释组成。汇编程序开发分四个步骤。第一步,源程序编辑,可以使用任意的文本编辑器实现,生成相应的文本文件。如用masm编辑的源程序后缀名为.asm。第二步,源程序汇编,该过程将源程序翻译成由机器代码组成的目标模块文件,masm提供的汇编程序为ml.exe,生成后缀为.obj的文件。第三步,目标文件连接,该过程将一个或多个目标文件和库文件合成一个可执行
24、文件,其后缀通常为.exe。这一过程使用link连接程序完成。第四步,可执行程序的调试,该过程使用debug.exe完成,只是对可执行程序的调试,并不生成新的文件。6、(1) 变量位于说明性语句中,用来反映逻辑地址,同时自身还具有各种属性,而标号存在于执行性语句中,仅反映逻辑地址。 (2)数值表达式一般是指由运算符连接的各种常数所构成的表达式。地址表达式是指名字、标号以及利用各种操作符形成的表达式。 (3)符号常量就是利用一个标识符表达的数值,字符串常量是用单或双引号括起来的单个或多个字符。7、(1) byte ABC, 10, 10h, EF, 3 dup( -1, ?, 3 dup(4)
25、00000000H41H00000001H42H00000002H43H00000003H0AH00000004H10H00000005H45H00000006H46H00000007HFFH00000008H00H00000009H04H0000000AH0000000BH0000000CH0000000DH0000000EH0000000FH00000010H00000011H00000012H00000013H00000014H00000015H(2) word 10h, -5, 3 dup(?)FBH8、(1) my1b DB Personal Computer (2) my2b DB
26、 20 (3) my3b DB 20h (4) my4b DB 20B (5) my5w DW 20 dup(? (6) my6c EQU 100 (7) my7c EQU Personal Computer标号和变量具有两类属性: 地址:标号和名字对应存储单元的逻辑地址,包括段地址和偏移地址; 类型:标号、子程序名的类型可以是NEAR(近)和FAR(远),分别表示段内或段间;变量名的类型可以是BYTE(字节)、WORD(字)和DWORD(双字)等。masm定义了TINY(微型模式)、SMALL(小型模式)、COMPACT(紧凑模式)、MEDIUM(中型模式)、LARGE(大型模式)、HUGE
27、(巨型模式)、FLAT(平展模式)这七种存储模式。TINY创建COM程序,SMALL创建EXE程序。设计32位程序应该使用FLAT模式。实模式下的程序结构为:.model small, stdcall ;定义程序的存储模式(一般采用small).386 ;可选,如果有该语句,可以使用386 指令集include masm32includeio16.inc ;可选,如果在程序中使用作者自定义的宏命令需要这一句.stack ;定义堆栈段.data ;定义数据段 ;数据定义.code ;定义代码段.startup: ;程序起始点程序代码.exit 0 ;程序结束点,返回DOS子程序代码end ;汇编结束保护模式下的程序结构为:.386 ;必须是第一条非注释语句,说明这是一个32 位应用程序.model flat, stdcall ;定义程序的存储模式(32 位应用程序中必须采用flat)include masm32includeio32.inc ;.stack 4096 ;定义
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1