汇编与接口第三章作业

发布 2022-07-14 03:24:28 阅读 7956

1.已知ds=2000h,bx=0100h,si=0002h,存储单元[20100h]~[20103h]依次存放12 24 56 78h,[21200h]~[21203h]依次存放2a 4c b7 65h,说明下列每条指令执行后ax寄存器的内容。

1) mov ax, 1200h

解:ax=1200h

3) mov ax, [1200h]

解:物理地址=ds×16+1200h=20000h+1200h=21200h,所以ax=4c2ah

5) mov ax, [bx+1100h]

解:物理地址=ds×16+bx+1100h=20000h+0100h+1100h=21200h ,所以ax=4c2ah

7) mov ax, [bx][si+1100h]

解:物理地址=ds×16+bx+si+1100h=20000h+0100h+0002h+1100h=21202h ,所以ax=65b7h

2) mov ax, bx

解:ax=0100h

4) mov ax, [bx]

解:物理地址=ds×16+bx=20000h+0100h=20100h,所以ax=2412h

6) mov ax,[bx][si]

解:物理地址=ds×16+bx+si=20000h+0100h+0002h=20102h,所以ax=7856h

2.指出下列指令错误。

1) mov cx, dl

答:数据类型不匹配,cx是16位,dl是8位。

2) mov ip, ax

答:指令指针不能直接修改。

3) mov es, 1234h

答:段地址寄存器不能直接置数。

4) mov es, ds

答:段地址ds不能做源操作数。

5) mov al, 300

答:300大于255,al是8位的,最多只能存255

6) mov [sp], ax

答:sp不能做间接寻址寄存器。

7) mov ax , bx+di

答:基址变址寻址必须打。

8) mov 20h, ah

答:立即数不能做目的地址单元。

3.已知数字0~9对应的格雷码依次为:18h、34h、05h、06h、09h、0ah、0ch、11h、12h、14h,它存放在于以tabel为首地址(设为200h)的连续区域中。对如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。

lea bx,table ;取表的首地址送bx,执行后(bx)=200h

mov al,8 ;立即数8送al,执行后,(al)=8

xlat查表,将表首地址+8((bx)+(al))所对应单元内容送al,

执行后,(al)=12h(8所对应的格雷码)

4.什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?

答:堆栈是在内存中开的一个特殊的数据区,堆顶有堆栈指针sp与ss共同决定。

原则是:先进后出,两个操作:入栈、出栈,对应指令:push(入栈)、pop(出栈)。

5.已知ss=ffa0h,sp=00b0h,画图说明执行下列指令序列时,堆栈区和sp的内容如何变化?

mov ax , 8075h

push ax

mov ax , 0f79h

push ax

pop bx

pop [bx]

解:8.请分别用一条汇编语言指令完成如下功能:

1)把bx寄存器和dx寄存器的内容相加,结果存入dx寄存器。

解:add dx, bx

2)用寄存器bx和si的基址变址寻址方式把存储器的一个字节与al寄存器的内容相加,并把结果送al中。

解:add al, [bx+si] 或add al, [bx][si]

3)用寄存器bx和02bh的寄存器相对寻址方式,把存储器的一个字和cx寄存器的内容相加,并把结果送回存储器中。

解:add [bx+02bh] ,cx 或add 02bh [bx] ,cx

4)把数0a0h与al寄存器内容相加,并把结果送al中。

解:add al, 0a0h

10.指出下列指令错误。

1) xchg [si], 30h

答:立即数不能作为单元地址来保存数据,所以交换指令中的两个操作数必须是地址操作数。

2) pop cs

答:cs不能作为寻址寄存器使用。

3)sub [si], di]

答:算术运算指令中的两个操作数不能同时都在内存中。

4)push ah

答:push指令中的操作数必须是16位操作数,ah是8位。

5)adc ax, ds

答:ds不能做源操作数,6)out dx, ah

答:只能使用al(当端口数据位是8位)或ax(端口数据位是16位)与端**换数据。

7)in al 3fch

答:端口地址大于255时,必须有dx寄存器间接寻址。

20.假设ds=2000h,bx=1256h,si=528fh,位移量table=20a1h,[232f7h]=3280h,[264e5h]=2450h,试问执行下列段内间接转移指令后,转移的目的地址是什么?

1) jmp bx

2) jmp table[bx]

3) jmp [bx][si]

解:(1)jmp bx,目标地址的偏移量在bx中,所以转移的目的地址是cs:1256h(也可以直接写成有效地址ip=1256h)。

2) jmp table[bx],目标地址的偏移量在存储器单元中,该存储器单元有效地址为(bx)+ table中,所对应的物理地址=ds×16+(bx)+table=20000h+1256h+20a1h=232f7h,该单元存放的内容为3280h,所以jmp table[bx] 转移的目的地址是cs:3280h(也可以直接写成有效地址ip=3280h)

3) jmp [bx][si] 目标地址的偏移量在存储器单元中,该存储器单元有效地址为(bx)+ si)中,所对应的物理地址=ds×16+(bx)+(si)=20000h+1256h+528fh=264e5h,该单元存放的内容为4500h,所以jmp table[bx] 转移的目的地址是cs:4500h(可以直接写成有效地址ip=4500h)。

23.假设ax和si存放的是有符号数,dx和di存放的是无符号数,请用比较指令和条件转移指令实现以下判断:

1)若dx>di,转到above执行;

2)若ax>si,转到greater执行;

3)若cx=0,转到zero执行;

4)若ax-si产生溢出,转到overflow执行;

5)若si≤ax,转到less_eq执行;

6)若di≤dx,转到below_eq执行。

解:(1)cmp dx,di

ja above

2)cmp ax,si

jg greater

3)cmp cx,0

je zero

4)cmp ax,si

jo overflow

5) cmp si,ax

jle less_eq

6) cmp di,dx

jbe below_eq

微机原理及接口第三章作业答案

1 下列各条指令是否有错?如果有,请指出错误之处并改正。1 mov ds,1000h 2 mov 100 23h 3 add ax,bx bp 6 4 push dl 5 in ax,3fh 6 out 3ffh,al 7 les ss,si 8 pop ax 9 imul 4ch 10 shl b...

第三章作业

v s 顺序执行下述两个动作 1.s值加1,即s s 1 2.如果s 0,则该进程继续运行 3.如果s 0,则唤醒等待信号量s阻塞队列中的头一个进程 把阻塞态改为就绪态 执行v操作的进程继续运行。procedure s var s semaphore begin s s 1 if s 0 then ...

第三章作业

1 顺序栈空 栈满条件2 链栈栈空 栈满条件。3 循环队列队空 队满条件,如何表示队列中数据元素的个数4 链队列队空 队满条件。5 以下运算实现在顺序栈上的进栈,请在 处用适当的语句予以填充。int push sqstacktp sq,datatype x if sp top sqstack max...