微机原理作业与答案

发布 2022-09-04 20:28:28 阅读 5305

8086第三章作业。

3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址。

1)1000h 10000h-1ffffh

2)1234h 12340h-2233fh

3)e000h e0000h-effffh

4)ab00h ab000h-bafffh

3-12对于下列cs:ip组合,计算出要执行的下条指令存储器地址。

1)cs=1000h和ip=2000h 答:下条指令存储器地址:12000h

2)cs=2400h和ip=1a00h 答:下条指令存储器地址:25a00h

3)cs=1a00h和ip=b000h 答:下条指令存储器地址:25000h

4)cs=3456h和ip=abcdh 答:下条指令存储器地址:3f12dh

3-37 指出下列指令源操作数的寻址方式。

1) mov ax,1200h;立即数寻址。

2)mov bx,[1200h];直接寻址。

3)mov bx,[si];变址寻址

4)mov bx,[bx+si+1200];相对基变址寻址。

5)mov [bx+si],al;寄存器寻址。

6)add ax,[bx+di+20h];相对基变址寻址。

7)mul bl寄存器寻址。

8)jmp bx间接寻址。

9)in al,dx寄存器间接寻址。

10)inc word ptr[bp+50h] ;相对基址寻址。

小结:虽然对存储器的访问指令、输入/输出指令(in指令和out指令)、跳转指令(jmp指令)都有直接寻址和间接寻址,但是形式是有很大差别的:

1. 直接寻址:

1) 对于存储器的访问用方括号括起来的二进制数,如:mov bx,[1200h]

2) 对于输入/输出指令(in指令和out指令)用二进制数。

如:in ax,8fh 又如: out 78h,al

3) 对于跳转指令(jmp指令)是以目标标号为直接地址的。

如: jmp addr1

2.间接寻址:

1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址。

如:mov ax,[bp]

2) 对于输入/输出指令用dx做间接寻址寄存器。

如:in ax,dx 又如: out dx,al

3) 跳转指令直接写明寄存器即可 (段内)

如: jmp bx ;段内间接转移,cs不变,ip=(bx)

段间需组合:如: jmp dword ptr[bx+addr1];ds*4+bx+addr1为物理地址连续4个单元的内容作为目标地址。

3-38指出8086/8088下列指令中存储器操作数地址的计数表达式。

1) mov al,[di] 答:存储器操作数地址的计数表达式为:(ds)×16+(di)

2) mov ax,[bx+si] 答:地址的计数表达式为:(ds)×16+(bx)+(si)

3) mov 8[bx+si],al 答:地址的计数表达式为:(ds)×16+8+[(bx)+(si)]

4) add al,es:[bx] 答:地址的计数表达式为:(es)×16+(bx)

5) sub ax,[2400h] 答:地址的计数表达式为:(ds)×16+2400h

6) adc ax,[bx+di+1200h] 答:地址表达式为:(ds)×16+(bx)+(di)+1200h

7) mov cx,[bp+si] 答:地址的计数表达式为:(ss)×16+(bp)+(si)

8) inc byte ptr(di)答:地址表达式为:(ds)×16+(di)

注:段寄存器的分工:

1. **段(程序段):cs

2. 数据段:①一般ds;②当用bp(及其组合)间接寻址偏移量时,用ss段寄存器;③ 串操作时,源段(与si组合)用ds;目标段(与di组合)用es

3. 堆栈段:①与堆栈相关的指令;②当用bp(及其组合)间接寻址偏移量时,用ss段寄存器;

4. 附加段:①加段超越运算符(如38-(4);;串操作时,目标段(与di组合)用es

3-39 指出8086/8088下列指令的错误何在?

1.mov [si],ip答:ip不可访问:

2.mov cs,ax答:cs不可访问:

3.mov bl,si+2 答:类型不匹配,或者变址寻址寄存器未加方括号。应写成mov bl,[si+2]或mov bx,si+2

4.mov 60h,bl答:立即数不能做目标操作数。

5.push 2400h答:push的源操作数不能是立即数。

6.inc [bx答:对于间接寻址的存储单元加1指令,数据的长度必须用byte ptr、word ptr或dword ptr类型伪指令加以说明,否则,汇编程序不能确定是对字节、字还是双字加1。(p92)

7.mul –60h答:无符号乘法指令,操作数不能用立即数。

8.add [2400h],2ah答:[2400h]前要加类型说明。

9.mov [bx],[di] 答:在mov指令中,两个操作数不能都是存储器操作数。

10.mov si,al 答:两个操作数的长度不一样,类型不匹配。

有的同学所答非所问,问错在**,却作成了改成正确的。

3.40 mov cs,ax指令会带来什么错误?

答:这样做会影响后面指令,因为cs的改变不能按要求执行。提示遇到了无效指令。

3-41 阅读下列程序段,指出每条指令执行以后有关寄存器的内容是多少?

mov ax,0abch ;ax寄存器的内容是:0abch

dec axax寄存器的内容是:0abbh

and ax,00ffh ;ax寄存器的内容是:00bbh

mov cl,4cl寄存器的内容是:04h

sal al,1al寄存器的内容是:76h

mov cl,alcl寄存器的内容是:76h

add cl,78hcl寄存器的内容是:0eeh,push axss*16+sp)=0076h,ax寄存器的内容是:0076h

pop bxbx寄存器的内容是:0076h

3.42 指出ret与iret两条指令的区别,并说明各用在什么场合?

答:(1)ret与iret是两条返回主程序的返回指令,但ret是与过程(子程序)调用指令call对应使用的过程返回指令,而iret是与中断指令int n对应使用的中断返回指令。

2)ret指令应安排在过程的出口即过程的最后一条指令处,它的功能是从堆栈顶部弹出由call指令压入的断点地址值,迫使cpu返回到调用程序的断点去继续执行。

iret指令总是安排在中断服务程序的出口处,由它控制从堆栈中弹出程序断点送回cs和ip中,弹出标志寄存器内容送回f中,迫使cpu返回到断点去继续执行后续程序。

3.43 说明mov bx,data和mov bx,offset data指令之间的区别?

答:mov bx,data直接将data的值赋给bx,mov bx,offset data是将data在段内的偏移地址赋给bx.

3.44 给定ds=1100h,bx=0200h,list=0250h,si=0500h。试指出下面各条指令寻址存储器的地址。

1) mov list[si],edx ; pa=ds*16+list+si=11750h

2) mov cl,list[bx+si];pa=ds*16+list+bx+si=11950h

3) mov ch,[bx+si];pa=ds*16+bx+si=11700h

4) mov dl,[bx+100h];pa=ds*16+bx+100h=11300h

3.45 假定pc机存储器地地址区有关单元的内容如下:

20h)=3ch,(21h)=00h,(22h)=86h,(23h)=0eh,且cs=2000h,ip=0010h,ss=1000h,sp=0100h,flags=0240h,这是若执行int 8指令,试问:

1) 程序转向从何处执行(用物理地址回答)?

2) 栈顶6个存储单元的地址(用逻辑地址回答)及内容分别是什么?

答:(1)程序转向0e89ch处执行,中断服务程序的入口地址在00020h-00023h单元。

2) 栈顶6个单元的内容 1000h:00feh 0240h

1000h:00fch 2000h

1000h:00fah 0012h

注:执行int 8指令(2个字节)使f寄存器内容先入栈,断点再入栈保护,同时中断服务程序的入口地址赋值给 cs和ip

3-46 设sp=2000h,ax=3000h,bx=5000h,执行下列片段程序后,sp=?ax=?bx=?

push ax

push bx

pop ax

答:执行以上片段程序后,sp=1ffeh;ax=5000h;bx=5000h

注:8086/8088的堆栈方向与51单片机相反:执行push 堆栈指针被修改:sp-2sp

执行pop 堆栈指针被修改:sp+2 sp

3-48 设ax=5555h,bx=ff00h,执行下列片段程序后, ax=?bx=?cf=?

and ax,bxax=5500h

xor ax,axax=0000h

not bxbx=00ffh

微机原理作业与答案

第四章汇编语言程序设计。4 2 下列程序执行后,寄存器ax,bx,cx的内容分别是多少?d segment at 0202h 定位数据段地址。org 0202h 定位偏移地址。da word dw 20h mov ax,da wordax 0020h mov bx,offset da word bx...

微机原理作业答案

程序题作业答案 一 写指令 1 将di寄存器的内容减1dec di或 sub di 1 2 用一条指令使程序从中断服务程序返回 iret 3 从80h端口读入数据送入alin al,80h 4 将3000h及3001h两单元内容与ax寄存器内容相减,并将其差送回原单元。sub 3000h ax 5 ...

微机原理作业答案

第一次作业。2.完成下列补码运算,并根据结果设置标志sf zf cf和of,指出运算结果是否溢出。1 00101101b 10011100b 45 补。100 补。55 补。sf 1 zf 0 cf 0 of 0 无溢出。2 01011101b 10111010b 93 补。70 补。93 补。sf...