东南大学微机实验报告2带流程图Word文档下载推荐.docx

上传人:b****8 文档编号:22615091 上传时间:2023-02-04 格式:DOCX 页数:20 大小:281.92KB
下载 相关 举报
东南大学微机实验报告2带流程图Word文档下载推荐.docx_第1页
第1页 / 共20页
东南大学微机实验报告2带流程图Word文档下载推荐.docx_第2页
第2页 / 共20页
东南大学微机实验报告2带流程图Word文档下载推荐.docx_第3页
第3页 / 共20页
东南大学微机实验报告2带流程图Word文档下载推荐.docx_第4页
第4页 / 共20页
东南大学微机实验报告2带流程图Word文档下载推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

东南大学微机实验报告2带流程图Word文档下载推荐.docx

《东南大学微机实验报告2带流程图Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《东南大学微机实验报告2带流程图Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。

东南大学微机实验报告2带流程图Word文档下载推荐.docx

(1)用任意一种文本编辑器(EDIT、NOTEPAD、UltraEDIT等)建立编辑汇编源程序,并将其保存为文件名.asm文件,将其放入带汇编工具的文件夹中(d:

\tasm)。

注:

文件名不要起的过长,在连接时可能会出现can’tfindfile的问题。

(2)开始菜单,点运行条目,打入cmd命令进入DOS调试环境。

(3)进入该文件夹(cdd:

\tasm),键入如下命令开始编辑程序:

d:

\zxj>

edit文件名.asm

(4)将程序保存后返回DOS进行汇编,键入如下命令:

tasm文件名.asm

如果汇编通过,进行下一步,如果出现error,返回3步骤,根据错误的行数进行修改,然后重新汇编,直到不产生error为止。

此时若出现warning可不予理会。

(5)将程序进行连接,键入如下命令:

d:

link文件名.obj

如果连接正确,进行下一步,如果错误返回3步骤进行修改,然后重新编译和连接。

(6)执行程序,键入如下命令:

文件名.exe

如果执行正确,则应该显示正确结果;

如果执行错误,返回步骤3,重新编译连接和执行。

(7)如果不能直接从程序中找出错误,可以应用Debug程序进行调试,键入如下命令:

td文件名.exe

在找出错误后,重新返回3步骤,重新编译连接和执行。

2、实验相关操作界面

(1)TD操作界面

四、实验源程序和流程图:

1、实验1:

流程图:

源代码:

DATASEGMENT

INPUTDB100,100DUP(0)

STRING1DB0DH,0AH,'

PLEASEINPUTYOURSTRING'

0DH,0AH,'

$'

STRING2DB0DH,0AH,'

THESTRINGYOUINPUTIS:

'

STRING3DB0DH,0AH,'

DOYOUWANTTOCONTINUE(Y/N):

STRING4DB0DH,0AH,'

THETOTALNUMBERIS:

DATAENDS

STACKSSEGMENTSTACK

DB256DUP(0)

STACKSENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACKS

MAINPROCFAR

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACKS

MOVSS,AX

LOOP1:

MOVDX,OFFSETSTRING1

MOVAH,09H

INT21H

MOVDX,OFFSETINPUT

MOVAH,0AH

MOVDX,OFFSETSTRING2

MOVAH,09H

CALLDISP

MOVDX,OFFSETSTRING4

ADDBL,30H

MOVDL,BL

MOVAH,02H

MOVDX,OFFSETSTRING3

MOVAH,01H

CMPAL,'

Y'

JZLOOP1

MOVAH,4CH

MAINENDP

DISPPROCNEAR

XORCX,CX

MOVCL,INPUT[1]

MOVBL,INPUT[1]

MOVSI,2

AGAIN:

MOVDL,INPUT[SI]

CMPDL,61H

JBNEXT

CMPDL,7AH

JANEXT

SUBDL,20H

NEXT:

MOVAH,02H

INCSI

LOOPAGAIN

RET

DISPENDP

CODEENDS

ENDSTART

2、实验2:

3、实验3

datasegment

input1db4,5dup(0)

input2db4,5dup(0)

input3db4,5dup(0)

input4db4,5dup(0)

input5db4,5dup(0)

tempdb00h,00h

tempoutdb00h

outputdb00h,00h,00h,00h,00h

string1db0dh,0ah,'

pleaseinputyournumber(00h~ffh):

0dh,0ah,'

string2db0dh,0ah,'

thenumberyouinputis(00h~ffh):

string3db0dh,0ah,'

thenumberafterorderingis(00h~ffh):

string4db0dh,0ah,'

doyouwanttocontinue(y/n):

dataends

stackssegmentstack

db256dup(0)

stacksends

codesegment

assumecs:

code,ds:

data,ss:

stacks

mainprocfar

start:

movax,data

movds,ax

movax,stacks

movss,ax

loopQ:

movdx,offsetstring1

movah,09h

int21h

movdx,offsetinput1

movah,0ah

movdx,offsetstring1

movdx,offsetinput2

int21h

movdx,offsetinput3

movdx,offsetinput4

movdx,offsetinput5

callshowin

moval,input1[2]

movtemp[0],al

moval,input1[3]

movtemp[1],al

callchange

moval,tempout

movoutput[0],al

moval,input2[2]

moval,input2[3]

movoutput[1],al

moval,input3[2]

moval,input3[3]

movoutput[2],al

moval,input4[2]

moval,input4[3]

movoutput[3],al

jmploop2

loop1:

jmploopQ;

77

loop2:

moval,input5[2]

moval,input5[3]

movoutput[4],al

callorder;

85

movdx,offsetstring3

movsi,0

circle:

movah,output[si]

movdl,ah

movcl,4

shrdl,cl

calldisp

anddl,0fh

movdl,48h

movah,02h

movdl,0h

incsi

cmpsi,5

jnzcircle

movdx,offsetstring4

movah,1

cmpal,'

y'

jzloop1

movah,4ch

mainendp

showinprocnear

movsi,2

circle1:

movdl,input1[si]

jnzcircle1

circle2:

movdl,input2[si]

jnzcircle2

circle3:

movdl,input3[si]

jnzcircle3

circle4:

movdl,input4[si]

jnzcircle4

circle5:

movdl,input5[si]

jnzcircle5

ret

showinendp

changeprocnear

xorax,ax

xorbx,bx

xordx,dx

movbl,temp[0]

cmpbl,40h

jbnext1

subbl,37h

jmpnext

next1:

subbl,30h

next:

movtemp[0],bl

movbl,temp[1]

jbnext2

jmpnext3

next2:

next3:

moval,temp[0]

movcl,10h

mulcl

addal,bl

movtempout,al

changeendp

orderprocnear

XORAL,AL

XORBL,BL

movsi,0h

movdi,1h

order1:

moval,output[si]

order2:

cmpal,output[di]

jnlnet

movbl,output[di]

movoutput[si],bl

movoutput[di],al

moval,output[si]

net:

incdi

cmpdi,5

jnzorder2

movdi,si

cmpsi,4

jnzorder1

orderendp

dispprocnear

pushdx

pushax

cmpdl,9

jbenum

adddl,7

num:

adddl,30h

popax

popdx

dispendp

codeends

endstart

五、实验结果

3、实验3:

六、遇到的问题及解决办法

1、在写代码的过程中遇到过很多问题

(1)在编程时忘记了add的两个操作数要同时为十六位符号数或八位符号数这个规则,因此在编译的时候出现了问题

(2)三个程序代码都是自己先写,然后再跟书上或网上的demo进行比较修改,在这个过程中发现熟悉一些指令可以让代码简单很多,譬如说lodsb、stosb、xor等等,在自己写的时候很难想到去用,因此对各种指令有一定的熟悉程度还是很必要的。

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

当前位置:首页 > 总结汇报 > 学习总结

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

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