西安交通大学汇编实验报告.docx

上传人:b****5 文档编号:8494367 上传时间:2023-01-31 格式:DOCX 页数:13 大小:126.01KB
下载 相关 举报
西安交通大学汇编实验报告.docx_第1页
第1页 / 共13页
西安交通大学汇编实验报告.docx_第2页
第2页 / 共13页
西安交通大学汇编实验报告.docx_第3页
第3页 / 共13页
西安交通大学汇编实验报告.docx_第4页
第4页 / 共13页
西安交通大学汇编实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

西安交通大学汇编实验报告.docx

《西安交通大学汇编实验报告.docx》由会员分享,可在线阅读,更多相关《西安交通大学汇编实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

西安交通大学汇编实验报告.docx

西安交通大学汇编实验报告

 

汇编语言实验报告

 

计算机XX班

21305050XXXX

2053年6月2日

80X86汇编语言程序设计课内实验报告

班级

计算机32

实验时间

2015

姓名

刘恒

学号

2130505037

实验内容概述

实验一熟悉汇编语言的实验环境

实验二数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。

实验三设计一程序,接收从键盘输入的数字(1~5),并对每个数字的输入次数进行计数,计数结果存放在以COUNT为首地址的数组中。

(最好能将计数结果打印出来)。

实验四子程序及DOS/BIOS调用程序设计

题6.9

设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。

试编制一个子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数并分别存放到S6,S7,S8,S9和S10单元中。

实验五高级汇编语言技术

题7.11

试编写一段程序,完成以下功能:

若给定名为X的字符串长度大于5时,下列指令将汇编10次。

ADDAX,AX

(要求:

使用条件汇编,编译过程中生成LST文件,查看宏展开情况)

实验六输入输出程序设计

编写程序,使类型1CH的中断向量指向中断处理程序COUNT,COUNT统计1CH中断次数并存入单元M中。

实验七BIOS和DOS中断

题9.2

编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。

加密表为:

输入数字:

0,1,2,3,4,5,6,7,8,9

密码数字:

7,5,9,1,3,6,8,0,2,4

实验步骤

第一题

1.熟悉汇编语言的实验环境,了解各项功能的调用。

2.熟悉掌握masm,link,debug等工具,将一个asm文件通过汇编连接成一个可执行文件。

第二题

1.编写实验二并调试并调试

2.查看数据段寄存器结果是否正确。

第三题

1.编写实验三并调试,初步了解中断的功能调用。

2.从键盘输入若干1-5,看输出结果是否正确。

第四题:

1.在主程序中调用子函数count,完成将每个在数组mark里的成绩一一取出。

2.分别判定其大小而放入统计60~69分,70~79分,80~89分,90~99分和100分的人数的S6,S7,S8,S9和S10单元中,在数据段中查看出S6,S7,S8,S9和S10中的数。

第五题:

1.使用条件汇编和重复汇编。

2.判断当给定名为X的字符串长度大于5时,重复ADDAX,AX10次。

第六题:

1.使类型1CH的中断向量指向中断处理程序COUNT。

2.COUNT中1CH中断每调用一次则给num加一,计算出num最后的值后存入单元M中。

第七题:

1.接收从键盘输入的10个十进制数字,输入回车符则停止输入。

2.调用xlat使得(al)<—((al)+(bx))

实验中遇到的问题及其解决方法

1、关于没有定义堆栈段系统发出warning问题?

⏹Link的时候,如果程序没有定义堆栈,dos系统会发出警告,但不影响后续操作。

⏹问题是在实验2中遇到,解决的思路是暂且忽略这个警告,因为堆栈是用来保存便于返回的,当程序不是很复杂时,用堆栈显得不叫繁琐。

2、关于汇编语言的输出问题?

⏹汇编语言输出时,预期为数字或者英文字母,但有时会出现乱码。

⏹经过仔细思考,发现汇编的输出同一为16进制,只要把所有的输出同一为16进制而不是10进制,输出就没有问题。

3、关于数据加密问题?

⏹最后一题为数据加密后输出,题目给定一个密码表,要求将输入的数据加密后输出

⏹通过查找命令,发现xlat命令的作用是使得(al)<—((al)+(bx)),这样就很方便的将数据加密。

实验结果

第一题:

 

 

第二题

第三题

 

第四题

第五题

 

年月日

实验结果

第六题:

 

第七题:

 

建议

1.上机实验太少,可以考虑增加上机次数。

2.两次上机时间相隔太久,最好可以将上机时间提前。

3.可以增加一些选作的课程设计,满足不同需求的同学。

下附各个题目代码;

第二题:

datasegment

mdw-1,0,0,1,-2,-3,-4,4

maxdw0

dizhidw?

dataends

codesegment

mainprocfar

assumecs:

code,ds:

data

movax,data

start:

pushds

subax,ax

pushax

movax,data

movds,ax

leabx,m

movcx,8

t1:

movax,[bx]

testax,8000h

jzt2

negax

t2:

cmpax,max

jbt3

movmax,ax

movdizhi,bx

t3:

addbx,2

loopt1

movax,ax

ret

mainendp

codeends

endstart

第三题:

datasegment

countdb5dup(0)

dataends

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

movax,data

movds,ax

s1:

movcx,10d

callfenlei

calldisp

movax,4c00h

int21h

ret

mainendp

fenleiprocnear

input:

movah,1

int21h

cmpal,0dh

jzexit

subal,30h

cmpal,01h

jbinput

cmpal,05h

jainput

movah,0

cbw

movbx,ax

decbx

inccount[bx]

loopinput

exit:

ret

fenleiendp

dispprocnear

movsi,0

movbx,5

s:

movdl,count[si]

adddl,30h

movah,2

int21h

incsi

decbx

cmpbx,0

jas

ret

dispendp

codeends

endstart

第四题:

datasegment

scoredw76,69,84,90,73,88,99,63,100,80

S6dw0

S7dw0

S8dw0

S9dw0

S10dw0

dataends

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

pushds

subax,ax

pushax

movax,data

movds,ax

s1:

movcx,10

callfenlei

movax,1

ret

mainendp

fenleiprocnear

movsi,0

s2:

movax,score[si]

movbx,10

divbl

movbl,al

subbx,6

salbx,1

incS6[bx];S6为S6,S7,S8,S9,S10的首地址

addsi,2;根据((socre)/10-6)*2决定该成绩送给哪一个单元

loops2

ret

fenleiendp

codeends

endstart

第五题:

datasegment

xdb'123456'

ydb0

dataends

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

pushds

subax,ax

pushax

movax,data

movds,ax

movax,2

IF(y-x)gt5

rept10

addax,ax

endm

endif

movbx,1

ret

mainendp

codeends

endstart

第六题:

datareasegment

Mdw0

datareaends

;------------------------------

programsegment

mainprocfar

assumecs:

program,ds:

datarea

start:

pushds

subax,ax

pushax

movax,datarea

movds,ax

;getinterruptvector

moval,1ch

movah,35h

int21h

pushes

pushbx

;setinterruptvector

pushds

movax,segcount

movds,ax

movdx,offsetcount

moval,1ch

movah,25h

int21h

popds

;--------------------------

int1ch

int1ch

int1ch

int1ch

;inal,21h

;andal,11111110b

;out21h,al

;sti

;------------------------

;movdi,1000

;delay:

;decdi

;jnzdelay

;resetinterruptvector

popdx

popds

moval,1ch

movah,25h

int21h

ret

mainendp

countprocnear

sti

incM

iret

countendp

programends

endstart

第七题:

datasegment

scoredb7,5,9,1,3,6,8,0,2,4

bufferdb10dup

(1)

dataends

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

pushds

subax,ax

pushax

movax,data

movds,ax

movsi,0

movcx,10

leabx,score

input:

movah,1

int21h

cmpal,0dh

jzexit

subal,30h

jbinput

cmpal,09h

jainput

xlat;[(bx)+(al)]->al

movbuffer[si],al

incsi

loopinput

exit:

movax,ax

ret

mainendp

codeends

endstart

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

当前位置:首页 > 自然科学 > 数学

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

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