优惠劵精选网站怎么做,域名邮箱免费注册,网页代理软件,wordpress标签生成页面对应的知识点#xff1a;
指令系统
扩展操作码的计算#xff1a; 公式#xff1a; 对扩展操作码而言#xff0c;若地址长度为n#xff0c;上一层留出m种状态#xff0c;下一层可扩展出 mx2^n 种状态 1.设计某指令系统时#xff0c;假设采用 16 位定长指令字格式#…对应的知识点
指令系统
扩展操作码的计算 公式 对扩展操作码而言若地址长度为n上一层留出m种状态下一层可扩展出 mx2^n 种状态 1.设计某指令系统时假设采用 16 位定长指令字格式操作码使用扩展编码方式地址码为6位包含零地址一地址和二地址3种格式的指令若二地址指令有12条一地址指令有254条则零地址指令的条数最多为
A.0 B.2 C.64 D.128
答案D 先分析一下: 二地址指令占122*612位地址空间4位用来表示操作码二地址指令有12条那么剩余16-124条操作码扩展给一地址指令。 0000~1011 xxxx xxxx xxxx 一地址指令格式为 11xx xxxx xxxx xxxx其中低6位为地址码一地址指令有254条那么一地址指令可表示的范围 1100 0000 00xx xxxx~1111 1111 01xx xxxx 其中00 0000 00~11 1111 01表示0~253总共254条指令。剩余256-2542条指令扩展给零地址指令。 1111 1111 1xxx xxxx前9位固定因为超过1111 1111 01xx xxxx就是零地址能表示的范围了。剩余位为16-97。所以零地址指令的条数最多为2^7128条。 直接用公式 二地址指令有12条则剩余16-124种操作码给一地址指令一地址指令有254条4*2^6-2542种操作码给零地址指令所以零地址指令一共有2*2^6128条。 还可以这么想 地址码为6位一条二地址指令会占用2^6条一地址指令的空间一条一地址指令会占用2^6条零地址指令的空间。若全都是零地址指令则最多有2^16条减去一地址指令和二地址指令所占用的零地址指令空间即2^16-254x2^6-12x2^6x2^6128。 2.某计算机按字节编址指令字长固定且只有两种指令格式其中三地址指令29条、二地址指令107条每个地址字段为6位则指令字长少应该是
A.24位 B.26位 C.28位 D.32位
答案A 分析三地址指令有29条需要至少5位操作码最后会剩余2^532 32-293种操作码扩展给二地址指令而二地址额外多了6位操作码地址码比三地址指令少6位所以数量最大达到3*64192条。所以指令字长最少为561223位。 又因为计算机按字节编址需要8的倍数所以指令字长至少为24位。 指令寻址方式
1.寄存器 R1、R2 均为 16 位指令 MOV R1,[R2]的功能是把内存数据传送至寄存器 R1寻址方式为寄存器间接寻址。R2的值为1234H内存单元1234H存放数据56H内存单元 1235H 存放数据 78H采用小端方式存储。则执行指令后R1的值为()。
A.5678H B. 7856H C.8765H D.6587H
答案B MOV R1,[R2]指的是将R2寄存器的内容放到R1中又因为R1R2是16位寄存器所以可以取出两个内存单元的数据放到R1中即取出1234和1235的内容5678小端方式存储和阅读顺序是反的所以R1的值为“7856” 2.某计算机机的字长为 16 位主存按字编址。转移指令由两个字节组成采用相对寻址第一个字节为操作码字段第二个字节为相对偏移量字段。若某转移指令所在的主存地址为 4000H相对偏移量字段的内容为06H则该转移指令执行后的PC值为()。
A.4002H B. 4004H C.4007H D.4008H
答案C 转移指令的目标地址一定是当前指令的下一条指令作为基址偏移量。 由于主存按字编址而转移指令又由两个字节组成刚好就是一个字所以只需要PC1就可以。 如果这个这里说的是“主存按字节编址”那么PC自增的时候就是PC2 转移指令执行后的PC值为4000H06H14007H 3.某机器指令字长为 16 位主存按字节编址取指令时每取一字节PC自动加1。当前指令地址为 2000H指令内容为相对寻址的无条件转移指令指令中的形式地址为40H。则取指令后及指令执行后PC的内容为()
A.2000H2042H B.2002H2040H C.2002H2042H D.2000H2040H
答案C 1.取一个字节PC1指令字长为16位2个字节所以取指令后PC的内容为PC22002 2.转移指令的目标地址需要将当前指令的下一条指令作为基地址偏移量 20002402042 同个题型
某机器字长为 16位主存按字节编址转移指令采用相对寻址由 2字节组成第一字节为操作码字段第二字节为相对位移量字段。假定取指令时每取一字节 PC 自动加 1。若某转移指令所在主存地址为 2000H相对位移量字段的内容为06H则该转移指令成功转移后的目标地址是()
A.2006H B.2007H C.2008H D.2009H
答案C 20002062008 4.某计算机的主存容量为4M*16 位且存储字长等于指令字长若该机能完成 97 种操作操作码位数固定且有直接、间接、基址、变址、相对、立即六种寻址方式则相对寻址的偏移量范围为()
A.(-32,31) B.(-64,63) C.(-128,127) D.(-256,255)
答案A 指令由操作码寻址特征地址码组成 97种操作对应至少2^7128种操作码即操作码位数有7位6种寻址方式对应至少3位地址。内存地址有16位所以偏移量为16-7-36位。 偏移量是用补码表示的n位补码表示范围是~所以6位能表示的范围 ~-32~31 同一题型
某计算机采用 16 位定长指令字格式操作码位数和寻址方式位数固定指令系统有 48 条指令支持直接、间接、立即、相对4种寻址方式。在单地址指令中直接寻址方式的可寻址范围是()。A.0~255 B.0~1023 C.-128~127 D.-512~511
答案A 48条指令所以操作码字段为6位2^664,又因为有4种寻址方式所以寻址特征需要2位2^24地址字段16-6-28位。 因为采用直接寻址所以地址码字段放的是主存地址主存地址是无符号数所以这个问题就转化为了8位无符号数的寻址范围0~ 5.对按字寻址的机器程序计数器和指令寄存器的位数各取决于()
A.机器字长存储器的字数
B.存储器的字数指令字长
C.指令字长机器字长
D.地址总线宽度存储器的字数
答案B 机器按字寻址程序计数器PC给出下一条指令字的访存地址指令在内存中的地址因此取决于存储器的字数指令寄存器IR用于接收取得的指令因此取决于指令字长。 6.设相对寻址的转移指令占 3B第一字节为操作码第二、三字节为相对位移量(补码表示而且数据在存储器中采用以低字节为字地址的存放方式。每当 CPU 从存储器取出一字节时即自动完成(PC)1→PC。若 PC的当前值为 240(十进制)要求转移到290(十进制 )则转移指令的第二、三字节的机器代码是( )若 PC 的当前值为 240(十进制)要求转移到 200(十进制)则转移指令的第二、三字节的机器代码是( )。
A. 2FH、FFH B. D5H、00H C. D5H、FFH D.2FH、00H
答案DC ① 数据在存储器中采用以低字节为字地址的存放方式表示采用小端存储。小端存储表示数据低位存放在低地址空间大端存储表示数据的高位存放在低地址空间。就拿低地址空间来记就可以了如果低地址放的是数据低位低字节就是小端存储如果低地址放的是数据高位高字节就是大端存储。 以低字节为字地址的存放方式”字的地址取低地址作为字地址例如下图大端方式存储低地址存放在数据高位那么他的字地址就是12H。小端方式存储他的字地址就是34H。以低字节为字地址也就是低字节数据放在低地址所以是小端存储方式。 ② PC当前值是240执行完转移指令后PC的值为290所以 2403PC3x偏移量290x47101111(2进制。转移指令占3B第一字节为操作码第二、三字节为相对位移量并且用补码表示所以101111扩展为16位 0000 0000 0010 1111----002F(16进制)采用小端存储2F00 注意小端存储只是字节之间的顺序颠倒字节内的顺序不能动。 ③ 同理 2403x200x-43 -43对应的补码16位1111 1111 1101 0101----FFD5(16进制)采用小端存储D5FFH 7.某计算机按字节编址采用大端方式某指令的一个操作数的机器数为 ABCD 00FFH,该操作数采用基址寻址方式指令中形式地址(用补码表示)为FF00H当前基址寄存器的内容为 C000 0000H则该操作数的LSB(即FFH)存放的地址是()。
A.C000 FF00H B.C000 FF03H C.BFFF FF00H D.BFFF FF03H
答案D 操作数的有效地址C000 0000HFFFF FF00HBFFF FF00H。 由于计算机按字节编址采用大端方式 所以在存储单元BFFF FF00H低地址中放高字节ABH1字节BFFFF FF01H放CDHBFFFF FF02H放00H BFFFF FF03H放FFH。 问机器数ABCD 00FFH中的FFH存放在哪里答案就是BFFFF FF03H。 同一题型
某计算机采用大端方式按字节编址。某指令中操作数的机器数为 1234 FF00H该操作数采用基址寻址方式形式地址(用补码表示)为FF12H基址寄存器的内容为 F000 0000H则该操作数的LSB(最低有效字节)所在的地址是()。
A.FO00 FF12H B. F000 FF15H C.EFFF FF12H D. EFFF FF15H
答案D 基址寻址方式基址寄存器的内容不变即F000 0000H形式地址为FF12H所以操作数的有效地址 F000 0000HFFFF FF12HEFFF FF12H又因为采用大端方式低地址存放高字节数据按字节编址所以EFFF FF12H中存放的是12H EFFF FF13H中存放34H EFFF FF14H存放FFHEFFF FF15H存放00H所以操作数的LSB(最低有效字节)所在的地址(00H)是 EFFF FF15H 8.某机器有一个标志寄存器其中有进位/借位标志 CF、零标志 ZF、符号标志 SF 和溢出标志 OF条件转移指令 bgt(无符号整数比较大于时转移)的转移条件是( ) A.CFOF1 B.ZF1 C.1 D.1
答案C 对于无符号数而言SF和OF无意义其实就可以选出C了。 大于的时候转移即两个数进行相减操作CF0只有不够减才会借位ZF也为0ZF是1说明结果为0所以1 9.某计算机有 16 个通用寄存器采用 32 位定长指令字操作码字段(含寻址方式位)为8位STORE指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式。若基址寄存器可使用任意一个通用寄存器且偏移量用补码表示则STORE指令中偏移量的取值范围是()
A.-32768~32767 B.-32767~32768 C.-65536~65535 D.-65535~65536
答案A 指令的组成 操作码字段8位 源操作数的寻址特征寻址方式4位16位通用寄存器 目的操作数的寻址特征寻址方式4位 偏移量32-8-4-416位。 16位补码的取值范围-32768~32767 答案C 先变址后间址 ID存放有效地址的地址。 (ID)操作数的有效地址。 ((ID ))操作数。 10.按字节编址的计算机中某 double 型数组 A 的首地址为 2000H使用变址寻址和循环结构访问数组 A保存数组下标的变址寄存器的初值为 0每次循环取一个数组元素其偏移地址为变址值乘以 sizeof(double)取完后变址寄存器的内容自动加 1。若某次循环所取元素的地址为2100H则进入该次循环时变址寄存器的内容是()。
A. 25 B. 32 C.64 D.100
答案B 每个数组元素的地址2000H(起始地址)变址寄存器的内容*sizeof(double) 2100H2000H变址寄存器的内容*8(double型)-----100H(16进制)256(10进制)256/832所以变址寄存器的内容为32。 指令系统
1.假设 R[ax] FFE8H,R[bx]7FE6H执行指令“add ax,bx”后寄存器的内容和各标志的变化为( ) A. R[ax]7FCEHOF1SF0CF0ZF0 B. R[bx]7FCEHOF1SF0CF0ZF0 C.R[ax]7FCEHOF0,SF0CF1ZF0 D.R[bx]7FCEHOF0SF0CF1ZF0
答案C OF溢出最高位的进位异或次高位的进位所以OF1 SF符号计算结果为正所以SF0 CF进位/借位Sub CoutSub加法0减法1 Cout最高位的进位 所以CF1 ZF零标志位ZF0 2.假设 R[ax] 7FE6HR[bx]FFE8H执行指令“sub bx,ax”后寄存器的内存和各标志的变化为()。 A.R[ax]8002HOF0SF1CF1ZF0 B. Rbx]8002HOF0SF1CF0ZF0 C.R[ax]8002HOF1SF1CF0ZF0 D.R[bx]8002HOF1SF1CF0ZF0
答案B “sub bx,ax”就是bx-ax 减法转加法bx - ax---bx(-ax) 怎么将ax转为-axax的全部位取反末位1 1111 1111 1110 1000 1000 0000 0001 1010 --------------------------------------- (1)1000 0000 0000 0010 所以 OF110SF1CFSub Cout110ZF0 3.某计算机的数据采用小端方式存储减法指令“sub ax,imm”的功能为(ax)-imm→ax,imm 表示立即数该指令对应的十六进机器码为 2dxxxx(从左到右以字节为单位由低地址到高地址)其中xxxx对应 imm 的机器码若imm -3 (ax)7则该指令对应的机器码和执行后 OF 标志位的值分别为()。
A.2DFFFDH,0 B2DFFFDH,1 C.2DFDFFH,0 D.2DFDFFH,1
答案C ① -3的机器数为别忘了符号扩展1111 1111 1111 11012进制FFFD16进制 采用小端方式存储所以低地址存放的是低字节数据所以题目中 “2dxxxx(从左到右以字节为单位由低地址到高地址)”对应的机器码就是2dFDFF FD是一个字节FF是一个字节字节间颠倒字节内不用颠倒。 ② 运算的时候是一定是按2个字节进行运算 也就是不能按照 0111 0011-3全部位取反1 -------------- (0) 1010 这样算得到的OF1是错的。 需要按照 0007H-FFFDH计算 0000 0000 0000 0111 0000 0000 0000 0011 ----------------------------------- 0000 0000 0000 1010 这样算是正确的OF0 4.假设 R[eax]080480B4HR[ebx]00000011HM[080480F8H]000000B0H执行指令
“imul eax,[eaxebx*4],-16”后寄存器或存储单元的内容变为( )。
A.R[eax]00000B00H B. M[080480F8H]00000B00H
C.R[eax] FFFFF500H D.M[080480F8H]FFFFF500H
答案C [eaxebx*4]*(-16)---eax ebx*4就是让ebx的内容左移2位 00000011---000000(没有拆) 0001 0001----左移两位---000000(没有拆) 0100 0100 eaxebx*4 0804 80F8H0000 0044 0804 80F8H *(-16)先将其看作*16即左移4位2^416 000000B0H---00000(没拆) 0000 1011 0000---左移四位---00000(没拆) 1011 0000 0000 即00000 B 00 H 继续乘-1相当于取了相反数即全部位取反再加1 00000 B 00 H---FFFFF 0101 0000 0000FFFFF500 5.程序P中有两个变量i和j被分别分配在寄存器 eax 和 edx 中P 中语句“if(ij) {...}”对应的指令序列如下(左边为指令地址中间为机器代码右边为汇编指令)其中jle指令的偏移量为 0d: 若执行到 804846aH 处的cmp指令时i105j100则 jle 指令执行后将会转到()处的指令执行。 A. 8048461H B.804846eH C.8048479H D.804847bH
答案D ① jle表示jump if less or equal如果edx-eax的结果0那么就执行jle。 ② 100-105为负数所以要执行jle执行完jle后PC自增有图片可以看出每次自增2 804846a----804846c 所以最后会转到804846c20d8048 47bH