微机原理作业汇编基础mov及堆栈指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的值