实验二算术逻辑运算及移位操作微机原理与接口技术

实  验  报  告
课程名称:  微机原理与接口技术 
实验名称:实验二算术逻辑运算及移位操作
专    业:  计算机科学与技术   
学    号:         
姓    名:             
实验地点:  系统结构实验室   
实验日期:           
任课教师:               
1.熟悉算术逻辑运算指令和移位指令的功能。
2.了解标志寄存器各标志位的意义和指令执行对它的影响。
要求
1.复习8088/8086指令系统中的算术逻辑类指令和移位指令。
2.实验之前按照题目要求预先编写好实验内容中的程序段。
3.实验之前预习实验内容并写好实验预习部分。
实验环境
台式机一台
Windows XP 操作系统
Turbo Debugger调试工具
实验预习
1.8088微处理器标志寄存器中有哪些状态标志?各有何作用?MOV、PUSH、POP、ADD、SUB、AND、OR、NOT指令中,哪些指令不影响标志位?
答:
CF---进位标志。当加减法运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0。
ZF---零标志。若运算结果为0,则ZF=1;否则ZF=0.
SF---符号标志。运算结果的最高有效位就是符号标志的状态。即运算结果最高位为1,则SF=1;否则SF=0.
PF---奇偶标志。当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0.
OF---溢出标志。若算术运算的结果有溢出,则OF=1;否则OF=0。
AF---辅助进位标志。若运算时D3位(低半字节)有进位或借位,则AF=1;否则AF=0.
MOV,PUSH,NOT不影响标志位。
2.请写出mul指令和imul指令的区别。并举例说明。
答:
mul是无符号乘法指令,imul是有符号乘法指令
例:字节数据乘法:A5H*64H
mov al,64h
mov bl,0a5h
mul bl
计算二进制数乘法:A5H*64H。如果把它当作无符号数,用mul指令结果为4074H。如果同样的数据编码采用imul指令如下:
imul  bl
将A5H*64H用imul指令执行,进行有符号数乘法,则结果为DC74H。
3.请写出div指令和idiv指令的区别。并举例说明。
答:
div是无符号除法指令,idiv是有符号除法指令。
例:字数据除法:40003H/8000H
mov  dx,4
mov  ax,3
mov  word ptr[30h].8000h
div word ptr[30h]
上述结果是无符号除法,同样数据有符号除法结果如下:
idiv  word  ptr[30h]
4.如何用移位指令实现将AL寄存器中的无符号数乘以10?
答:xor  ah,ah
shl  ax,1
mov  bx,ax
shl  ax,1
shl  ax,1
add  ax,bx
内    容
1.请写出CF、ZF、SF、OF、PF、AF标志位的含义。并写出以下三个程序段中每条指令执行后对各标志位的影响并上机验证结果。
请写出CF、ZF、SF、OF、PF、AF标志位的含义。
CF ---进位标志                        ZF---零标志
SF ---符号标志                        OF---溢出标志
PF---奇偶标志                        AF---辅助进位标志
请写出以下三个程序段中每条指令执行后对各标志位的影响并上机验证结果。
程序段一:
CF
ZF
SF
OF
PF
AF
mov ax,1018h
0
0
0
0
0
0
mov si,230ah
0
0
0
0
0
0
add ax,si
0
0
0
0
1
1
add al,30h
0
0
0
0
0
0
mov dx,03ffh
0
0
0
0
0
0
add ax,bx
0
0
0
0
0
0
add [20h],1000h
1
0
0
0
1
0
add [20h],ax
0
0
0
0
0
1
push ax
0
0
0
0
0
1
pop bx
0
0
0
0
0
1
程序段二:
CF
ZF
SF
OF
PF
AF
mov ax,0a0ah
0
0
0
0
0
0
add ax,0ffffh
1
0
0
0
1
1
mov cx,0ff00h
1
0
0
0
1
1
adc ax,cx
1
0
0
0
1
0
sub ax,ax
    0
1
0
0
1
0
inc ax
0
0
0
0
0
0
or cx,0ffh
0
0
1
0
1
0
and cx,0f0fh
0
0
0
0
1
0
mov [10h],cx
0
0
0
0
1
0
程序段三:
CF
ZF
SF
OF
PF
AF
mov bl,25
0
0
0
0
0
0
mov byte ptr[10h],80
0
0
0
0
0
0
mov al,[10h]
0
0
0
0
0
0
mul bl
1
0
1
1
0
0
2.从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和存放在0013H单元中,再求出这三个数之积,乘积存放在0014单元中。试编写完成此功能的汇编语言程序段并上机验证结果(将结果截图)。
MOV BX,0010H
MOV [BX],10H
MOV [BX+1],04H
MOV [BX+2],30H
MOV AX,0000H
ADD AL,[BX]
ADD AL,[BX+1]
ADD AL,[BX+2]
MOV DS:[0013H],AL
MOV AL,[BX]
MUL byte ptr [BX+1] 
MUL byte ptr [BX+2]   
MOV DS:[0014],AX
   
内容
实验
3.请编写完成下述功能的汇编语言程序段。上机验证结果,程序运行的最后结果(AX)=?(将结果截图)。
(1) 传送15H到AL寄存器;
(2) 再将AL的内容乘以2;     
(3) 接着传送15H到BL寄存器;     
(4) 最后把AL的内容乘以BL的内容。 
(1)mov  al,15h
(2)mov dx,2
mul  dx
(3)mov  bl,15h
(4)mul  bl
4.用移位指令实现将AL寄存器中的无符号数乘以10。试编写汇编语言程序段,并上机验证结果(将结果截图)。
xor  ah,ah
shl  ax,1
mov  bx,ax
shl  ax,1
shl  ax,1
add  ax,bx
   
5.请编写完成下述功能的汇编语言程序段。上机验证结果,程序运行后的商=?(将结果截图)。
(1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;
(2) 把DS:1000H单元中的数据传送到AX寄存器;
(3) 把AX寄存器的内容算术右移二位;
(4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;
(5) 最后把商存入字节单元DS:1003H中。
内容
实验
MOV WORD PTR[1000H],2058H
MOV BYTE PTR[1002H],12H
MOV AX,[1000H]
MOV BX,[1002H]
SAR AX,1
SAR AX,1
DIV BX
MOV [1003H],AX
内容
实验
   
体  会、(100字以上)
本节实验课我们熟悉了算术逻辑运算指令和移位指令,了解了标志寄存器各标志位的意义和指令执行对它的影响,学习了使用算数运算类指令来执行二进制的算术运算:加、减、乘、除。学习了怎样用移位指令实现将AL寄存器中的无符号数乘以10,注意每次shl指令执行一次逻辑左移位,相当于乘2;shr指令执行一次逻辑右移位,相当于除以2,商在操作数中,余数由cf标志反映。但是实验操作中,还是指令不够熟悉,需要进一步加强锻炼。
评语及成绩

本文发布于:2024-09-20 14:43:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/87894.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指令   标志   结果   实验   符号   运算   单元   执行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议