8086汇编实验第一次报告Word下载.docx

上传人:b****5 文档编号:19010836 上传时间:2023-01-03 格式:DOCX 页数:12 大小:352.97KB
下载 相关 举报
8086汇编实验第一次报告Word下载.docx_第1页
第1页 / 共12页
8086汇编实验第一次报告Word下载.docx_第2页
第2页 / 共12页
8086汇编实验第一次报告Word下载.docx_第3页
第3页 / 共12页
8086汇编实验第一次报告Word下载.docx_第4页
第4页 / 共12页
8086汇编实验第一次报告Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

8086汇编实验第一次报告Word下载.docx

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

8086汇编实验第一次报告Word下载.docx

(1)用找到应插入数的位置作为循环结构的结束条件,把要插入数的位置前的元素均前移一个字。

从数组的尾部向头部查找,可逐字取出数组中一个数K与N比较,若K>N,则把K前移一个字,然后继续往后查找。

若K≤N,则把N插在K之前结束程序。

在arry_head-2单元中存放‘-1’,这样可以保证如果数N小于数组中所有数,那它必然大于-1,这样可以正确地把N放在数组之首,循环结束依然可以用K大于N。

(2)根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位,以测试数是否为0作为循环结束条件。

实验二:

利用逻辑右移把M中的数依次放到要比较的地址中,源变址从0开始,将M数组中的元素与0相比,大于0则跳转,小于0则求补使其变为绝对值,再比较大小,记下绝对值最大的数存入M+2n单元,偏移地址存入M+2(n+1)单元。

实验三.

将输入的数字依次与12345比较,相等则实现相对应的跳转,每跳转一次相应的计数器加1,依次计算每个数字出现的次数并放入相应的位置,转化为ASCⅡ码输出。

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

1、实验一

(1)忽视边界问题

考虑N与数组中所有数的大小关系。

当它大于所有数,循环次数可能为0,当它小于所有数,不允许查找范围超过数组首地址。

利用所有数均为正数的条件,在array_head-2单元中存放‘-1’,保证若N小于所有数那它必大于-1,正确地把N放在数组之首。

2、实验二调用NEG指令。

用补码表示负数解决了负数输出为正数的问题。

3、实验三在数组中包含负数时输出错误,单步调试后发现是输出语句有误,改正后正确输出了绝对值最大的数。

实验结果

见附录

建议

Dosbox工作环境与系统不兼容,无法使用,建议使用emd8086,更加简便易上手

附录

1.

(1)

datareasegment

xdw?

arry_headdw3,5,15,23,37,49,52,65,78,99

arry_enddw105

ndw32

datareaends

prognamsegment

mainprocfar

assumecs:

prognam,ds,datarea

start:

pushds

subax,ax

pushax

movax,datarea

movds,ax

movax,n

movarry_head-2,0ffffh

movsi,0

compare:

cmparry_end[si],ax

jleinsert

movbx,arry_end[si]

movarry_end[si+2],bx

subsi,2

jmpshortcompare

insert:

movarry_end[si+2],ax

ret

mainendp

prognamends

endstart

(2)

datasegment

addrdwnumber

numberdwY

countdw?

Ydw1,2,3,5,1,0,9

dataends

mainprocfar

assume:

cs:

prognam,ds:

data

movax,data

movcx,0

movbx,addr

movax,[bx]

repeat:

testax,0ffffh

jzexit

jnsshift

inccx

shift:

shlax,1

jmprepeat

exit:

movcount,cx

ret

二.

DATASEGMENT

MDW-9,2,-5,4,1,6,7,-8

nEQU$-M

DW2DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

MOVDI,0

MOVCX,n

SHRCX,1

MOVBX,0

NEXT:

MOVAX,M[SI]

CMPAX,0

JGETRUE

negAX

TRUE:

CMPBX,AX

JGGETNUM

XCHGBX,AX

MOVDI,SI

GETNUM:

INCSI

LOOPNEXT

MOVAX,M[DI]

MOV[M+n],AX

MOV[M+n+2],DI

movdl,bl

adddl,30h

movah,02h

int21h

movah,4ch

int21h

CODEENDS

ENDSTART

输入数组为-2,5,1,-6,-4,7,-8输出绝对值最大数8

三.

DATASSEGMENT

COUNTdb5dup(0)

DATASENDS

CODESSEGMENT

CODES,DS:

DATAS

pushds

subax,ax

pushax

MOVAX,DATAS

MOVDS,AX

next:

movah,01h

int21h

cmpal,'

1'

jzcompare1

2'

jzcompare2

3'

jzcompare3

4'

jzcompare4

5'

jzcompare5

jmpexit

compare1:

movcl,COUNT

addcl,1

movCOUNT[0],cl

jmpnext

compare2:

movbx,1

movcl,COUNT[bx]

movCOUNT[bx],cl

jmpnext

compare3:

movbx,2

compare4:

movbx,3

compare5:

movbx,4

movdl,COUNT[0]

adddl,30h

movah,02

int21h

movdl,COUNT[1]

movdl,COUNT[2]

movdl,COUNT[3]

movah,02

movdl,COUNT[4]

movah,4ch

CODESENDS

检验:

输入非1~5的数字会自动跳出,

输入53413,打印出10211

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

当前位置:首页 > PPT模板 > 动态背景

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

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