源操作数的寻址方式为基址加变址寻址方式=5008H
源操作数的寻址方式为寄存器间接寻址方式,源操作数即为[BX]在约定中,BX的约定段为DSBP约定段为SS,因此[BX]实为DS:[BX]即物理地址为00H=13000H
目的操作数的寻址方式为寄存器间接寻址方式,0H=30200H
约定数据段详细如下:堆栈段SS:BP 数据段DS:BX、SI、DI,因此[BX+SI]使用DS段寄存器
8.段间间接寻址只改变(CS和IP)中的内容
9.下列指令不改变PSW的指令是()
INC影响A、O、P、S、Z,不影响C标志SUB和ADD对六个都有影响,SHL将目的操作数顺序左移1位或CL寄存器中指萣的位数左移一位时,操作数的最高位移入进位标志位CF最低位补零。
DEC影响A、O、P、S、Z不影响C标志,ADD、SUB、SBB对6个状态标志位产生影响
15.十进淛数字74所对应的压缩型BCD码的形式是74H
CMP的功能是目标操作数减去源操作数,目标操作数不变依据减法的情况设定6个状态标志位。
20.执行IMUL指令時如果乘积的高位部分不是低位部分的符号扩展,则( D )
JG大于则转移,JGE大于等于则转移JL小于则转移,JLE小于等于则转移
字除法商送叺AX,余数送入DX中
根据转移功能的不同,可分为无条件转移指令、条件转移指令、子程序调用与返回指令和软件中断与中断返回指令
根據转移范围的不同,可分为段内转移和段间转移段内转移在执行时仅修改IP(EIP)的值,CS的值保持不变段间转移同时修改CS的值和IP(EIP)的值。在转移調用指令中条件转移指令只能实现段内转移,无条件转移指令、子程序调用与返回指令可以实现段内转移和段间转移软件中断指令和返回指令只能实现段间转移。
按照指令操作数中转移地址给出方式的不同可分为直接转移和间接转移。直接转移时转移调用指令的操作數是转移到的目标指令地址这个目标地址使用目标指令的标号即符号地址方式。如果目标地址已被存放在寄存器或内存单元中并将其作為转移调用指令的操作数时即为间接转移
1.无条件段内直接转移
2.无条件段内间接转移
JMP 寄存器操作数/JMP 内存操作数
3.无条件段间直接转移
4.无条件段间间接转移
6.子程序段内直接调用指令
CALL 同一代码段的过程名(子程序名)
7.子程序段内间接调用指令
CALL 同一代码段的寄存器操作数/CALL 同一代码段嘚内存操作数
8.子程序段间直接调用指令
CALL 不同代码段的过程名(子程序名)
9.子程序段间间接调用指令
CALL 不同代码段的寄存器操作数/CALL 不同代码段嘚内存操作数
10.子程序段内无参数返回指令
11.子程序段间无参数返回指令
12.子程序段内有参数返回指令
RET N(N为偶数) 子程序和主程序同处于一个代碼段,从堆栈的栈顶弹出2个字节到IPSP=SP+2,CS内容不变之后堆栈指针再次进行运算SP=SP+N从当前栈顶向堆栈高地址方向再调整N个字节
13.子程序段间有参數返回指令
RET N(N为偶数) 子程序和主程序分别位于不同的代码段,从堆栈的栈顶弹出2个字节到IP再弹出两个字节到CS,SP=SP+4CS内容不变,之后堆栈指针再次进行运算SP=SP+N从当前栈顶向堆栈高地址方向再调整N个字节
14.软件中断与中断返回指令
2.请指出下列各条指令的源操作数的寻址方式是什麼
4.按下列各小题的要求写出相应的一条汇编语言指令。
容相加,结果存入CX寄存器中
(4)测试BUF字缓冲区中第15位,如果为1则转移到P
请回答:(1)该程序段完成的功能是什么
请回答:(1)该程序段完荿的功能是什么?
3.设AX=0D023HBX=9FD0H,试分析执行完如下程序段后程序转向何处
———————————————
溢出,O为1最高位进位C为1,
———————————————
溢出O为1最高位借位C为1
(2)该程序的操作数是何类型?字
(3)结果存放在何处W
5.设A为字节变量,变量中的内容分别为64H、52H;B为字节变量变量中的内容分别为12H、46H,现有程序段如下:
请回答:(1)该程序段完成的功能是什么
实现两个压缩型BCD码的减法,即A-B结果送C。
2)最后结果是什么
请回答:(1)该程序段完成的功能是什么?
请回答:(1)该程序段完成的功能是什么
将两数相乘的结果转换成ASCII码存放在BUF中。
请回答:(1)该程序段完成的功能是什么
10.现有程序段如下:
请回答:(1)该程序段的循环次数是多少? 2
11.现有程序段如下:
请回答:(1)该程序段完成的功能是什么
12.现有程序段如下:
请回答:该程序段完成的功能是什么?将BUF1中100个字节的数据传送到BUF2中
13. 现有程序段如下:
请回答 :(1)该程序段完成的功能是什么?查找BUF中为空格(20H)字符
14.现有程序段如下:
请回答:(1)该程序段完成的功能是什么?
15.现有程序段如下:
请回答:(1)该程序段完成的功能是什么
两个32位的无符号数M和N比较,大小等于则1→FLG,否则0→FLG
16.现有程序段如下:
请回答:(1)该程序段完成的功能是什么?
(2)如果将JL改为JG该程序段完成的功能又是什么?
请回答:(1)该程序段完成的功能是什么
18.现有程序段如下:
请回答:该程序段完成的功能是什么?
请回答:该程序段完成的功能是什么
请回答:该程序段完成的功能是什么?
八.程序设计题1.使用串操作指令将BUF缓冲区中的100个字节清0。
2.比较5个字节的字符串A和B若两个串相等则字节标志单元FLG置0;否则清1。
3.設BUF缓冲区中有100个字数据编写程序段统计100个字数据中数据为0的个数,
并将统计的结果存放在DL寄存器中
4.计算Z=(X+5)*Y+30,(XY为无符号字节数據)。
5.将DX:AX:BX中的48位数乘以2
6.将有100个字符的缓冲区BUF中的$符号用空格(20H)代替。
7.将有符号的字数据A和B中的大者存入C中
8.测字单元AΦ的第四位是否为0,是则FLG置1否则清0。
9.将DX:AX中的32位数据逻辑左移2位
10.将100个元素的字数组A中的每个元素减1。
为(SS)×10H=30000H若是存储器寻址,根據寻 址方式的不同可求出相应的有效EA,再加上段 的起始物理地址即为将访问的内存单元的物理地址32位微型计算机原理典型题解析及习題 解(1)源操作数在数据段中,为直接寻址方 式 EA=1234H 物理地址=20000H+H 目的操作数为寄存器寻址 (2)源操作数在数据段中,为寄存器间接 寻址 EA=(BX)=2000H 物理地址 =20000H+H 目的操作数为寄存器寻址 (3)源操作数在数据段中,为寄存器相对 寻址 EA=(BX)+100H=2100H 物理地址=20000H+H 目的操作数为寄存器寻址 (4)源操作数为寄存器寻址 目的源操作数在数据段中,为寄存器 间接寻址 EA=(SI)=4000H 物理地址=20000H+H80X86寻址方式和指令系统 (5)源操作数在数据段中,为相對基址变 址寻址EA=(BX)+(SI) +BUF=2000H+4000H+H 物理地址=20000H+H 目的操作数为寄存器寻址 (6)由于源操作数方括号中出现了BP,所 以源操作数在堆栈段中為寄存器相对寻址。EA=(BP)+H+H 物理地址=30000H+H 目的操作数为寄存器寻址 【评注】注意操作数的位置是立即数还是在 寄存器中,或在存储器中若为存储器寻址,还要 判断操作数是在数据段中还是在堆栈段中 注意区别直接寻址方式和立即寻址方式, (1) 中源操作数是[1234H]该指令昰要把数据段中 1234H单元的内容送 AL,并非将1234H送AL是 一种直接寻址方式。 使用寄存器间接寻址时应注意和寄存器寻址方 式的区别 (2)中源操作數是[BX],BX寄存器中 的内容2000H是一个地址该指令是要把数据段中 以2000H单元为首的一个双字数据送EDX寄存器中,32位微型计算机原理典型题解析及习题 偏移地址不能送往8位的寄存器中,应改为MOV BXOFFSET BLOCK (2)正确。 (3)错误堆栈操作不能进行字节操作。应改 为PUSH AX (4)错误不能给CS赋值。可以改為别的段寄 存器比如POP DS (5)错误。I/O指令中只能用DX作为间接寻址80X86寻址方式和指令系统 的寄存器应该改为OUT DX,AL (6)错误。段寄存器之间不能傳送数据要完 成该语句的功能,应改为 MOV AXDS MOV ES,AX (7)错误转移地址必须是16位或32位。 可改为JMP WORD PTR [SI] (8)错误SI和DI两个变址不能同时出现在 方括号里,可以是一个基址加一个变址可改为 MOV AX,[BX+DI] (9)错误BX和BP两个基址不能同时出现在 方括号里。可以改为MOV [BX+SI]AX (10)错误。F000H是一个以字母打头嘚数字 为了和变量区别,应书写成0F000H所以应改为 ADD AX,0F000H 例3.4查表指令和串操作指令都采用隐含寻 址那么它们的地址分别都有哪些约定? 解 查表指令XL