微机原理作业汇编基础mov及堆栈指令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编基础,mov及堆栈指令

1.8086有哪4种逻辑段,各种逻辑段分别是什么用途?

代码段(Code Segment)用来存放程序的指令序列。处理器利用CS:IP取得下一条要执行的指令

•堆栈段(Stack Segment)确定堆栈所在的主存区域。处理器利用SS:SP操作堆栈中的数据

•数据段(Data Segment)存放当前运行程序所用的数据。处理器利用

DS:EA存取数据段中的数据

•附加段(Extra Segment)是附加的数据段,也用于数据的保存。处理器利用ES:EA存取数据段中的数据

附加回答[A回答在8086的程序设计中,一个程序可以有代码段CS、数据段DS、堆

2. 19、什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?逻辑地址是允许在程序中编排的地址,8086的逻辑地址有段基值和段内偏移量两部分。段基值存放在对应的段寄存器中,段内偏移量由指令给出。物理地址是信息在存储器中实际存放的地址。在8086系统中,物

理地址形成过程为:将段寄存器中存放的段基值(16位)左移4次再加偏移量,得20位的物理地址。

请将如下逻辑地址用物理地址表达:

(1)FFFFh:00FFFF0H(2)40h:17h417H(3)2000h:4500h24500H

(4)B821h:4567h 0BC777H

3. 举例说明CF和OF标志的差异。

溢出标志OF和进位标志CF是两个意义不同的标志

进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确

•例1:3AH + 7CH=B6H

无符号数运算:58+124=182,范围内,无进位有符号数运算: 58+124=182 ,范围外,有溢出

•例2:AAH + 7CH=(1)26H

无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28 ,范围内,无溢出

4. 已知(DS) = 2000H、(BX) = 0100H、(SI) = 0002H,存储单元

[20100H] ~ [20103H]依次存放12H, 34H ,56H 78H,[21200H] ~ [21203H]依次存放2AH ,4CH ,B7H ,65H,说明下列每条指令执行完后AX寄存器的内容。

(1)mov ax,1200h (2)mov ax,bx

(3)mov ax,[1200h] (4)mov ax,[bx]

(5)mov ax,[bx+1100h] (6)mov ax,[bx+si]

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

(1)指令MOV AX,1200H执行完后AX寄存器的内容为1200H;

(2)指令MOV AX,BX执行完后AX寄存器的内容为0100H;

(3)指令MOV AX,[1200H]是将从物理地址=(DS)*10H+1200H=21200H开始的两个单元内容送AX,执行完后AX寄存器的内容为4C2AH;

(4)指令MOV AX,[BX]是将从物理地址=(DS)*10H+(BX)=20100H开始的两个单元内容送AX,故执行完后AX寄存器的内容为3412H;

(5)指令MOV AX,[BX+1100]是将从物理地址=(DS)*10H+(BX)+1100H=21200H 开始的两个单元内容送AX,故执行完后AX寄存器的内容为4C2AH;

(6)指令MOV AX,[BX+SI]是将从物理地址=(DS)*10H+(BX)+(SI)=20102H

开始的两个单元内容送AX,故执行完后AX寄存器的内容为7856H;

(7)指令MOV AX,[BX+SI+1100]是将从物理地址=(DS)*10H+(BX)+(SI)

+1100H=21202H开始的两个单元内容送AX,故执行完后AX寄存器的内容为65B7H

(1)mov ax,1200h ;AX=1200h (2)mov ax,bx ;AX=0100h

(3)mov ax,[1200h] ;AX=4C2Ah (4)mov ax,[bx] ;AX=3412h

(5)mov ax,[bx+1100h] ;AX=4C2Ah (6)mov ax,[bx+si] ;AX=7856h (7)mov ax,[bx][si+1100h] ;AX=65B7h

5. 判断下列指令是否有错,如有请指出,并改正

(1)mov cx,dl(2)mov ip,ax

(3)mov es,1234h(4)mov es,ds

(5)mov al,300(6)mov[sp],ax

(7)mov ax,bx+di(8)mov20h,ah

1 mov cx,dl;数据类型不匹配,CX为16位,DL为8位

2 mov ip,ax ;IP为能在指令中出现,它是下一条要执行指令的偏移地址,不允许指令对其进行改变

3 mov es,1234h ;立即数1234H不能直接送段寄存器

4 mov es,ds ;段寄存器之间不能直接传送数据

5 mov al,300 ;数据类型不匹配,300超过一个字节,无符号字节最大数为255

6 mov [sp],ax ;SP为堆栈指针,对栈顶元素操作应该用PUSH指令,而不能使用MOV指令

7 mov ax,bx+di ;应该改为mov ax,[bx+di]

8 mov 20h,ah ;目的操作不能为立即数

9-12加题不写

[(9) MOV AX,[BX+10] (10) MOV AX,VAL[BX] (11) MOV AX,

[BX][SI] (12) MOV AX,[BP][SI]

9 xchg [si],30h ;交换指令的两个操作数均不能为立即数

10 pop cs ;CS不能作为目的操作数,也就是说不能通过指令直接改变CS的值

相关文档
最新文档