汇编语言实验报告含代码合肥工业大学.docx

上传人:b****3 文档编号:10403644 上传时间:2023-05-25 格式:DOCX 页数:46 大小:342.76KB
下载 相关 举报
汇编语言实验报告含代码合肥工业大学.docx_第1页
第1页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第2页
第2页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第3页
第3页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第4页
第4页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第5页
第5页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第6页
第6页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第7页
第7页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第8页
第8页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第9页
第9页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第10页
第10页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第11页
第11页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第12页
第12页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第13页
第13页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第14页
第14页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第15页
第15页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第16页
第16页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第17页
第17页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第18页
第18页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第19页
第19页 / 共46页
汇编语言实验报告含代码合肥工业大学.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言实验报告含代码合肥工业大学.docx

《汇编语言实验报告含代码合肥工业大学.docx》由会员分享,可在线阅读,更多相关《汇编语言实验报告含代码合肥工业大学.docx(46页珍藏版)》请在冰点文库上搜索。

汇编语言实验报告含代码合肥工业大学.docx

汇编语言实验报告含代码合肥工业大学

合肥工业大学

实验报告

课程:

汇编语言程序设计

专业班级:

学号:

姓名:

实验一Debug程序的使用

一.实验目的

1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容

实验内容:

1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:

0200H和DS:

0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:

0200H单元和DS:

0204H单元中的数据相加,并将运算结果存放在DS:

0208H单元中。

实验要求:

本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇

编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序

1、启动DOS操作系统2、运行DEBUG.COM程序(若当前盘为C)C:

>DEBUG↙–;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG

命令)3、用“A”命令编辑和汇编源程序–A↙186E:

0100MOVAX,[0200]↙186E:

0103MOVBX,[0202]↙186E:

0107ADDAX,[0204]↙186E:

010BADCBX,[0206]↙186E:

010FMOV[0208],AX↙186E:

0112MOV[020A],BX↙186E:

0116↙

4、用“U”命令反汇编验证源程序–UCS:

0100↙186E:

0100A10002MOVAX,[0200]

186E:

01038B1E0202MOVBX,[0202]186E:

010703060402ADDAX,[0204]186E:

010B131E0602ADCBX,[0206]186E:

010FA30802MOV[0208],AX186E:

0112891E0A02MOV[020A],BX186E:

0116–

注意:

检查源程序是否有错误,若有则返回到第3步用“A地址”命令进行修改,直到程序无错误。

DEBUG约定在其令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。

在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。

在DEBUG下,大小写不敏感。

5、程序未执行前,用“R”命令观察,相关寄存器的内容。

–R↙如:

(AX)=0000,(BX)=0000,(SI)=0000,

(DI)=0000,(CS)=0b58,(IP)=0100

 

6、在程序未执行前,用“D”命令观察DS:

0200H,DS:

0204H、DS:

0208H

单元的内容

–D20020B↙

7、用“G”命令运行源程序–G=1100116↙

 

8、再用“D”命令观察DS:

0200H~DS:

020BH字节单元中的内容

–D20020B↙

9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。

注意:

D命令显示内存数据,注意观察多字节数据在内存中的存放方式。

指令执行的时候,IP寄存器随着变化,注意观察。

四.实验结果(包括必要的截图)

1、程序运行结果:

(AX)=1110,(BX)=1111

DS:

0208H四字节单元的内容:

10111111

2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。

程序流程图)

开始

SI←200H

DI←204H

BX←208H

AX←[SI]

DX←[SI+2]

AX←AX+[DI]DX←DX+[DI+2]

[BX]←(AX)

[BX+2]←(DX)

结束

 

实验二汇编语言程序设计(顺序、循环)

一.实验目的

1、掌握顺序和循环程序结构和设计方法;

2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

二.实验内容

BL中只有一位为1.编写程序测试,,并输出提示信息“thexbitis1”,要求:

地址表和转移表。

地址表

CR=0dh

LF=0ah

dsegsegment

Msg1dbCR,LF,'The1bitis1','$'

Msg2dbCR,LF,'The2bitis1','$'

Msg3dbCR,LF,'The3bitis1','$'

Msg4dbCR,LF,'The4bitis1','$'

AddrdwFunc0,Func1,Func2,Func3

countdw0

dsegends

csegsegment

assumecs:

cseg,ds:

dseg

Start:

movax,dseg

movds,ax

movbl,1

movbh,0

movcx,4

Next:

shrbl,1

cmpbl,0

jeHandle

inccount

loopNext

Handle:

movax,count

shlax,1

movbx,ax

jmpAddr[bx]

Func0:

leadx,Msg1

jmpOutput

Func1:

leadx,Msg2

jmpOutput

Func2:

leadx,Msg3

jmpOutput

Func3:

leadx,Msg4

jmpOutput

Output:

movah,09h

int21h

movah,4ch

int21h

csegends

endStart

2学生成绩管理:

在内存score缓冲区中存放100个学生的成绩数据,为无符号字节数,要求实现下面功能:

给出不同分数段的人数

给出最高分,最低分,平均分

给定一个学生成绩,要求给出其名次

三.实验过程和程序

CR=0dh

LF=0ah

dsegsegment

scoredb90,80,30,60,50

len=$-score

beststrdb'>=90:

'

bestdb0,';',CR,LF,'$'

betterstrdb'>=80:

'

betterdb0,';',CR,LF,'$'

goodstrdb'>=70:

'

gooddb0,';',CR,LF,'$'

passstrdb'>=60:

'

passdb0,';',CR,LF,'$'

notpassstrdb'<=60:

'

notpassdb0,';',CR,LF,'$'

inputscoredb4,?

4dup(?

Msg1dbCR,LF,'Thehighestscoreis:

$'

Msg2dbCR,LF,'Thelowestscoreis:

$'

Msg3dbCR,LF,'Theaveragescoreis:

$'

InputinfodbCR,LF,'Pleaseinputscore:

$'

RankinfodbCR,LF,'Rankofthisstudentis:

'

rankdb1,';',CR,LF,'$'

dsegends

csegsegment

assumeds:

dseg,cs:

cseg

Start:

movax,dseg

movds,ax

;给出不同分数段的人数

movbx,0

movcx,len

Loop1:

cmpscore[bx],90

jbNext1

incbest

jmpDone

Next1:

cmpscore[bx],80

jbNext2

incbetter

jmpDone

Next2:

cmpscore[bx],70

jbNext3

incgood

jmpDone

Next3:

cmpscore[bx],60

jbNext4

incpass

jmpDone

Next4:

incnotpass

Done:

incbx

loopLoop1

addbest,30h

leadx,beststr

movah,09h

int21h

addbetter,30h

leadx,betterstr

movah,09h

int21h

addgood,30h

leadx,goodstr

movah,09h

int21h

addpass,30h

leadx,passstr

movah,09h

int21h

addnotpass,30h

leadx,notpassstr

movah,09h

int21h

;输出最大

leadx,Msg1

movah,09h

int21h

movcx,4

movbx,0

moval,score[bx]

Loop2:

incbx

cmpal,score[bx]

jajm

moval,score[bx]

jm:

looploop2

xorah,ah

movbl,10

divbl

addal,30h

movdl,al

movbh,ah

movah,2

int21h

movdl,bh

adddl,30h

movah,2

int21h

;输出最小

leadx,Msg2

movah,09h

int21h

movcx,4

movbx,0

moval,score[bx]

Loop3:

incbx

cmpal,score[bx]

jbjm1

moval,score[bx]

jm1:

looploop3

xorah,ah

movbl,10

divbl

addal,30h

movdl,al

movbh,ah

movah,2

int21h

movdl,bh

adddl,30h

movah,2

int21h

;输出平均

leadx,Msg3

movah,09h

int21h

movcx,4

movbx,0

xorax,ax

moval,score[bx]

Loop4:

incbx

addal,score[bx]

adcah,0

looploop4

movdx,0

movbl,5

movbh,0

divbx

movbl,10

divbl

addal,30h

movdl,al

movbh,ah

movah,2

int21h

movdl,bh

adddl,30h

movah,2

int21h

;

给定一个学生成绩,给出其名次

leadx,Inputinfo

movah,09h

int21h

leadx,inputscore

movah,0ah

int21h

movcl,inputscore+1

cmpcl,2

jaS100

jbS1

moval,inputscore+2

subal,30h

movch,10

mulch

addal,inputscore+3

subal,30h

jmpGo

S100:

moval,100

jmpGo

S1:

cmpcl,0

jzS0

moval,inputscore+2

subal,30h

jmpGo

S0:

moval,0

Go:

movbx,0

movcx,5

loop5:

cmpal,score[bx]

jaegoon1

incrank

goon1:

incbx

looploop5

addrank,30h

leadx,Rankinfo

movah,09h

int21h

movah,4ch

int21h

csegends

endStart

四.实验结果(包括必要的截图)

实验三汇编语言子程序设计(分支、子程序)

一.实验目的

1、掌握分支和子程序结构和设计方法;

2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

3、通过汇编语言了解高级语言的参数传递等知识。

二.实验内容

子程序设计:

完成Word型二进制,十进制和十六进制的相互转换,包括从键盘输入和屏幕输出功能。

要求:

1.功能选择。

2.转换使用子程序实现,且:

二进制到十进制和十六进制转换使用内存传递参数;十进制到二进制和十六进制转换使用寄存器传递参数;十六进制到二进制和十进制转换使用堆栈传递参数。

3.输出使用子程序实现。

三.实验过程和程序

datasegment

bufdb17,?

17dup(?

Instrudb'Instruction:

',0dh,0ah,'0:

changeBtoD.',0dh,0ah,'1:

changeBtoH.',0dh,0ah,'2:

changeDtoB.',0dh,0ah,'3:

changeDtoH.',0dh,0ah,'4:

changeHtoB.',0dh,0ah,'5:

changeHtoD.',0dh,0ah,'6:

Endprogram.$'

Msgdb0dh,0ah,'Pleaseinputafunctionnumber(0-6):

$'

Msg1db0dh,0ah,'Pleaseinputa16bitsBin:

$'

Msg2db0dh,0ah,'Pleaseinputa2bitsDec:

$'

Msg3db0dh,0ah,'Pleaseinputa4bitsHex:

$'

Msg4db0dh,0ah,'OutputtheBin:

$'

Msg5db0dh,0ah,'OutputtheDec:

$'

Msg6db0dh,0ah,'OutputtheHex:

$'

Endprodb0dh,0ah,'Endtheprogram!

$'

Procpt1dwBtoD

Procpt2dwBtoH

AddrtbldwFunc0,Func1,Func2,Func3,Func4,Func5,Func6

dataends

stack1segmentstack

dw512dup(0)

stack1ends

codesegment

assumecs:

code,ds:

data,ss:

stack1

Start:

movax,data

movds,ax

leadx,Instru

movah,9

int21h

Begin:

leadx,Msg

movah,9

int21h

movah,1

int21h

andax,0fh

shlax,1

movbx,ax

jmpAddrtbl[bx]

Func0:

callProcpt1

jmpBegin

Func1:

callProcpt2

jmpBegin

Func2:

leasi,buf

callDtoB

jmpBegin

Func3:

leasi,buf

callDtoH

jmpBegin

Func4:

leaax,buf

pushax

callHtoB

jmpBegin

Func5:

leaax,buf

pushax

callHtoD

jmpBegin

Func6:

leadx,Endpro

movah,9

int21h

movah,4ch

int21h

BtoDproc

pushsi

pushax

pushbx

pushcx

pushdx

leadx,Msg1

movah,9

int21h

leadx,buf

movah,0ah

int21h

leadx,Msg5

movah,9

int21h

movax,8000h

movbx,0

movcl,1

movsi,2

Do:

cmpbuf[si],'1'

jzDo1

jmpDo2

Do1:

orbx,ax

Do2:

shrax,cl

incsi

cmpsi,17

jbeDo

movax,bx

movdx,0

movcx,10000

divcx

movbx,dx

andax,00ffh

addal,30h

movdl,al

movah,2

int21h

movax,bx

movdx,0

movcx,1000

divcx

movbx,dx

andax,00ffh

addal,30h

movdl,al

movah,2

int21h

movax,bx

movcl,100

divcl

movbh,ah

addal,30h

movdl,al

movah,2

int21h

moval,bh

movah,0

movcl,10

divcl

movbh,ah

addal,30h

movdl,al

movah,2

int21h

addbh,30h

movdl,bh

movah,2

int21h

popdx

popcx

popbx

popax

popsi

ret

BtoDendp

BtoHproc

pushsi

pushax

pushbx

pushcx

pushdx

leadx,Msg1

movah,9

int21h

leadx,buf

movah,0ah

int21h

leadx,Msg6

movah,9

int21h

movax,8000h

movbx,0

movcl,1

movsi,2

Don:

cmpbuf[si],'1'

jzDon1

jmpDon2

Don1:

orbx,ax

Don2:

shrax,cl

incsi

cmpsi,17

jbeDon

Next1:

movdx,bx

movcl,12

shrdx,cl

anddl,0fh

cmpdl,09h

jbeOutput1

adddl,57h

movah,2

int21h

jmpNext2

Output1:

adddl,30h

movah,2

int21h

Next2:

movdx,bx

movcl,8

shrdx,cl

anddl,0fh

cmpdl,09h

jbeOutput2

adddl,57h

movah,2

int21h

jmpNext3

Output2:

adddl,30h

movah,2

int21h

Next3:

movdx,bx

movcl,4

shrdx,cl

anddl,0fh

cmpdl,09h

jbeOutput3

adddl,57h

movah,2

int21h

jmpNext4

Output3:

adddl,30h

movah,2

int21h

Next4:

movdx,bx

anddl,0fh

cmpdl,09h

jbeOutput4

adddl,57h

movah,2

int21h

jmpExit

Output4:

adddl,30h

movah,2

int21h

Exit:

popdx

popcx

popbx

popax

popsi

ret

BtoHendp

DtoBproc

pushsi

pushax

pushbx

pushcx

pushdx

leadx,Msg2

movah,9

int21h

leadx,buf

movah,0ah

int21h

leadx,Msg4

movah,9

int21h

incsi

movcl,[si]

xorch,ch

jcxzExit1

cmpcl,1

jzDone1

cmpcl,2

jzDone2

jmpExit1

Done1:

incsi

movbl,[si]

subbl,30h

movcx,8

jmpOutputa

Done2:

incsi

movbl,[si]

subbl,30h

moval,[si]

subal,30h

movcl,3

shlbl,cl

movcl,1

shlal,cl

addbl,al

incsi

moval,[si]

subal,30h

addbl,al

movcx,8

Outputa:

movdl,30h

shlbl,1

jncSkip

incdl

Skip:

movah,2

int21h

loopOutputa

Exit1:

popdx

popcx

popbx

popax

popsi

ret

DtoBendp

DtoHproc

pushsi

pushax

pushbx

pushcx

pushdx

lead

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2