汇编实验第二次实验报告.docx

上传人:b****4 文档编号:26810403 上传时间:2023-06-22 格式:DOCX 页数:10 大小:80.23KB
下载 相关 举报
汇编实验第二次实验报告.docx_第1页
第1页 / 共10页
汇编实验第二次实验报告.docx_第2页
第2页 / 共10页
汇编实验第二次实验报告.docx_第3页
第3页 / 共10页
汇编实验第二次实验报告.docx_第4页
第4页 / 共10页
汇编实验第二次实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

汇编实验第二次实验报告.docx

《汇编实验第二次实验报告.docx》由会员分享,可在线阅读,更多相关《汇编实验第二次实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

汇编实验第二次实验报告.docx

汇编实验第二次实验报告

本科实验报告

实验名称:

实验二算术运算类操作实验(基础与设计)

课程名称:

CPU与汇编

实验时间:

任课教师:

实验地点:

实验教师:

实验类型:

□原理验证

□综合设计

□自主创新

学生姓名:

学号/班级:

组号:

学院:

同组搭档:

专业:

成绩:

 

CPU与汇编实验二实验报告

一、实验目的

1、了解汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;

2、掌握各类运算类指令对各状态标志位的影响及测试方法;

3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;

4、熟悉无符号数和有符号数乘法和除法指令的使用;

5、掌握符号位扩展指令的使用。

6、掌握BCD码调整指令的使用方法

二、软硬件环境

1、硬件环境:

计算机系统windows;

2、软件环境:

装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识

本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:

1.加减法处理指令

主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。

2.乘除法指令和符号位扩展指令

主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW和从字扩展到双字的指令CWD。

3.BCD码的调整指令

主要有非压缩的BCD码加法调整指令DAA,压缩的BCD码减法调整指令DAS,非压缩的BCD码加法调整指令AAA,非压缩的BCD码减法调整指令AAS,乘法的非压缩BCD码调整指令AAM,除法的非压缩BCD码调整指令AAD。

四、实验内容与步骤

1、对于两组无符号数,087H和034H,0C2H和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。

编程并运行结果如下表:

对状态标志位的影响小结:

CF为进位标志,运算过程中发生进位(超出AL表示范围)则为CY,否则为NC;

AF为半进位标志,运算过程中某位发生进位,但结果没有超出AL表示范围,则为AC,否则为NA;

ZF为中断标志,这里没有影响;

OF为溢出标志,表示有符号运算时运算是否溢出,溢出为OV,否则为NV;

SF为符号标志,当看成符号数时,如果表示负数,则为NG,否则为PL;

PF为奇偶标志,运算结果二进制中1的个数为奇数时为PO,偶数时为PE。

程序代码如下:

DATASEGMENT

DB87H,34H,0C2H,5FH

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,DATA:

[0]

MOVBL,DATA:

[1]

ADDAL,BL

MOVAL,DATA:

[0]

MOVBL,DATA:

[1]

SUBAL,BL

MOVAL,DATA:

[0]

MOVBL,DATA:

[1]

MULBL

MOVAL,DATA:

[0]

MOVBL,DATA:

[1]

DIVBL

MOVAL,DATA:

[2]

MOVBL,DATA:

[3]

ADDAL,BL

MOVAL,DATA:

[2]

MOVBL,DATA:

[3]

SUBAL,BL

MOVAL,DATA:

[2]

MOVBL,DATA:

[3]

MULBL

MOVAL,DATA:

[2]

MOVBL,DATA:

[3]

DIVBL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2、在数据段定义了两个多精度的有符号16进制数,FIRST和SECOND,1)求两数的和与差,并将结果存放在THIRD为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH为首地址的缓冲区中。

试编程实现上述运算。

FIRSTDB45H,82H,96H,57H

SECONDDB12H,46H,83H,45H

编程计算得到结果如下表:

程序代码如下:

16进制代码:

datasegment

firstdb45H,82H,96H,57H

seconddb12H,46H,83H,45H

thirddb4dup(?

forthdb4dup(?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movsi,3

l1:

leadi,first

adddi,si

moval,[di]

leadi,second

adddi,si

movbl,[di]

adcal,bl

leadi,third

adddi,si

mov[di],al

decsi

cmpsi,-1

jnel1

movsi,3

l2:

leadi,first

adddi,si

moval,[di]

leadi,second

adddi,si

movbl,[di]

sbbal,bl

leadi,forth

adddi,si

mov[di],al

decsi

cmpsi,-1

jnel2

codeends

endstart

10进制代码:

datasegment

firstdb45H,82H,96H,57H

seconddb12H,46H,83H,45H

thirddb4dup(?

forthdb4dup(?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movsi,3

l1:

leadi,first

adddi,si

moval,[di]

leadi,second

adddi,si

movbl,[di]

adcal,bl

daa

leadi,third

adddi,si

mov[di],al

decsi

cmpsi,-1

jnel1

movsi,3

l2:

leadi,first

adddi,si

moval,[di]

leadi,second

adddi,si

movbl,[di]

sbbal,bl

das

leadi,forth

adddi,si

mov[di],al

decsi

cmpsi,-1

jnel2

codeends

endstart

3、编程计算((Z+X*Y-328)-V)/Y,其中X、Y、Z、V均为16位带符号数,假设初始数据分别装入X、Y、Z、V单元,要求上式计算结果的商存入AX,余数存入DX寄存器。

同学自行给出初始值加以验证程序。

首先实验中任选一组数据进行测试,选取的数据为

X=0234HY=09ABHZ=0ABCHV=0178H

程序代码如下所示:

datasegment

xdw0234H

ydw09ABH

zdw0ABCH

vdw0178H

dataends

codesegment

assumeds:

data,cs:

code

start:

movax,data

movds,ax

leasi,x

movax,[si]

leasi,y

movbx,[si]

imulbx

leasi,z

movbx,[si]

addax,bx

adddx,0

sbbax,328

sbbdx,0

leasi,v

movbx,[si]

sbbax,bx

sbbdx,0

leasi,y

movbx,[si]

idivbx

codeends

endstart

运行结果如下:

结果商AX=0234H余数DX=07FCH

经验算,结果正确。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1