组成实验报告.docx

上传人:b****4 文档编号:4229048 上传时间:2022-11-28 格式:DOCX 页数:10 大小:16.57KB
下载 相关 举报
组成实验报告.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

组成实验报告

上海理工大学光电信息与计算机工程学院

《计算机组成》实验报告

专  业计算机科学与技术

姓名  陈晓阳

学 号

年  级2015级

指导教师邬春学

成绩:

教师签字:

实验一汇编实验一4

实验二汇编实验二7

实验三汇编实验三12

实验一汇编实验一

一、实验目的

1)掌握汇编的基本语法

二、实验环境

MicrosoftWindows7MasmV2.2

三、实验内容

编程计算表达式x=axb+c-d/(e+f)

其中x、a、b、c、d、e、f均为双字节整数。

地址分别为X、A1、B1、C1、D1、E1、F1

四、实验代码及截图

1)

datasegment

;inputdatasegmentcodehere

A1DB2

B1DB1

C1DB3

D1DB4

E1DB1

F1DB4

X1DB?

dataends

stacksegment

;inputstacksegmentcodehere

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

;inputcodesegmentcodehere

movAL,A1

MULBL

ADDAL,C1

SUBAL,D1

MOVBL,E1

ADDBL,F1

DIVBL

MOVX1,AL

movah,4ch

int21h

codeends

endstart

1)

实验二汇编实验二

一、实验目的

学习间接寻址、数组和转移指令的用法

二、实验环境

MicrosoftWindows7MasmV2.2

三、实验内容

1)一个由3个元素组成的整数数组,已经存放在主存的连续存储单元中,数组的起始地址为AS。

设AS{10h,20h,30h}。

编程实现:

将数组AS中的元素向右循环移动一个位置,例如移位后变成{30h,10h,20h}。

编程实现:

将AS中最大元素和最小元素分别存于Max和Min中。

2)将字符串source中的内容复制到target中,并显示输出。

四、实验代码及截图

1)

datasegment

ASDW10H,20H,30H;inputdatasegmentcodehere

MAXDW0

MINDW0;数据初始

dataends

stacksegment

;inputstacksegmentcodehere

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax;将data给ds

movcx,0;cx赋初始值0

movsi,offsetas;将data偏移地址存到si

movax,[si];data内容给ax

addsi,2;si加2

Li:

movbx,[si]

mov[si],ax

movax,bx

addsi,2

addcx,1

cmpcx,2

JNZLi

subsi,6

mov[si],ax;将30移位到第一位

movax,[si]

movMIN,ax

movMAX,ax;初始化MIN,MAX

addsi,2

movbx,[si]

cmpbx,ax

JLL1;bx

movMAX,bx;如果bx>=ax,把bx值存入MAX

addsi,2;si后移一个数据

movdx,[si]

cmpbx,dx

JGL4

movMAX,dx;如果bx>dx则执行L4,否则将dx存入MAX

L1:

addsi,2

movbx,[si]

cmpbx,ax

JLL2;bx

movMAX,bx

L4:

cmpax,dx

JGL5

L5:

movMIN,dx;将dx存入MIN

L2:

movbx,[si]

subsi,2

movax,[si]

cmpbx,ax

JGL3;bx大于ax则跳转L3,否则将bx存入MIN

movMIN,bx

L3:

movMIN,ax;此时ax为10,将其存入MIN

movah,4ch

int21h

codeends

endstart

2)

datasegment

sourcedb'Helloworld$'

dataends

data1segment

targetdb30dup(?

data1ends

stacksegment

;inputstacksegmentcodehere

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax;data存入ds

movax,data1

moves,ax;data1存入es

leasi,source;source地址存到si

leadi,target;target地址存到di

movcx,2

std;DF=1

repmovsb;将si中字符串复制到di中

leadx,target

movah,9

int21h;输出复制得到的字符串

movah,4ch

int21h

codeends

endstart

1)

2)

实验三汇编实验三

一、实验目的

1)学习逻辑运算指令和移位指令的用法

二、实验环境

MicrosoftWindows7MasmV2.2

三、实验内容

1)将一个指定字符串进行异或加密,每个单字符的密钥(0-255)保存在数组Key中。

程序运行过程:

显示明文,显示所产生的密文,显示解密后的明文。

例如key={125,248,16,8,26}

2)将一个指定字符串进行循环移位加密。

每个单字符的密钥(-7~7)保存在数组Key中。

程序运行过程:

显示明文,显示所产生的密文,显示解密后的明文.例如key={-2,2,1,0,-1},其中负数表示循环左移,正数表示循环右移,0不变,数字表示移动的位数

四、实验代码及截图

1)datasegment

stringdb'Hello$';明文

keydb125,248,16,8,26;密钥

msg1db'mingwen:

$'

msg2db'miwen:

$'

dataends

stacksegment

;inputstacksegmentcodehere

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

leadx,msg1

movah,09h

int21h

leadx,string

movah,09h

int21h;输出加密前明文

movcx,5

loop1:

movbx,cx

moval,string[bx-1]

xoral,key[bx-1]

movstring[bx-1],al

looploop1;明文加密

leadx,msg2

movah,09h

int21h

leadx,string

movah,09h

int21h;输出加密后的密文

movcx,5

loop2:

movbx,cx

moval,string[bx-1]

xoral,key[bx-1]

movstring[bx-1],al

looploop2;解密密文

leadx,msg1

movah,09h

int21h

leadx,string

movah,09h

int21h;输出解密的明文

movah,4ch

int21h

codeends

endstart

2)datasegment

stringdb'Hello$';待加密明文

keydb-2,2,1,0,-1;密钥

msg1db'mingwen:

$'

msg2db'miwen:

$'

dataends

stacksegment

;inputstacksegmentcodehere

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

leadx,msg1

movah,09h

int21h

leadx,string

movah,09h

int21h;输出加密前的明文

movcx,5

moval,0

loop1:

movbx,cx

pushcx;对cx压栈

movcl,key[bx-1]

cmpcl,al

jlt1;若密钥小于0则跳转到tl

rolstring[bx-1],cl;密钥不小于0则左循环移位

jmps1;跳至sl

t1:

negcl;若密钥小于0,则取补,变为正数进行操作

rorstring[bx-1],cl;右循环移位

s1:

popcx;弹栈

looploop1

leadx,msg2

movah,09h

int21h

leadx,string

movah,09h

int21h;输出加密后的密文

movcx,5

moval,0

loop2:

movbx,cx

pushcx;压栈

movcl,key[bx-1]

cmpcl,al;比较密钥与0的大小

jgt2;若密钥大于0则执行t2

negcl;密钥不大于0则对cl取补

rolstring[bx-1],cl;对密文左循环移位

jmps2

t2:

rorstring[bx-1],cl;密钥大于0,对密文右循环移位

s2:

popcx;弹栈

looploop2

leadx,msg1

movah,09h

int21h

leadx,string

movah,09h

int21h;输出解密后的明文

movah,4ch

int21h

codeends

endstart

1)

2)

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

当前位置:首页 > 解决方案 > 学习计划

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

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