微原实验报告二Word格式文档下载.docx

上传人:b****4 文档编号:6356066 上传时间:2023-05-06 格式:DOCX 页数:16 大小:110.87KB
下载 相关 举报
微原实验报告二Word格式文档下载.docx_第1页
第1页 / 共16页
微原实验报告二Word格式文档下载.docx_第2页
第2页 / 共16页
微原实验报告二Word格式文档下载.docx_第3页
第3页 / 共16页
微原实验报告二Word格式文档下载.docx_第4页
第4页 / 共16页
微原实验报告二Word格式文档下载.docx_第5页
第5页 / 共16页
微原实验报告二Word格式文档下载.docx_第6页
第6页 / 共16页
微原实验报告二Word格式文档下载.docx_第7页
第7页 / 共16页
微原实验报告二Word格式文档下载.docx_第8页
第8页 / 共16页
微原实验报告二Word格式文档下载.docx_第9页
第9页 / 共16页
微原实验报告二Word格式文档下载.docx_第10页
第10页 / 共16页
微原实验报告二Word格式文档下载.docx_第11页
第11页 / 共16页
微原实验报告二Word格式文档下载.docx_第12页
第12页 / 共16页
微原实验报告二Word格式文档下载.docx_第13页
第13页 / 共16页
微原实验报告二Word格式文档下载.docx_第14页
第14页 / 共16页
微原实验报告二Word格式文档下载.docx_第15页
第15页 / 共16页
微原实验报告二Word格式文档下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微原实验报告二Word格式文档下载.docx

《微原实验报告二Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微原实验报告二Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。

微原实验报告二Word格式文档下载.docx

LOP:

TESTDH,00001111B;

判断是否显示16个字符换行

JNZNEXT

MOVDL,13;

换行

CALLDISP

MOVDL,10

CALLDISP

NEXT:

MOVDL,DH;

显示字符

MOVDL,'

'

;

两字符间加空格

INCDH;

使用DH计数

LOOPLOP

DONE:

;

退出程序

MOVAH,4CH

INT21H

DISPPROCNEAR;

在屏幕上显示字符

PUSHAX

MOVAH,2

INT21H;

DOS功能调用

POPAX

RET

DISPENDP

CODEENDS

ENDSTART

2.datasegment

inputdatasegmentcodehere

org100h

bufdb259dup(?

countequ$-buf

dataends

stacksegment

inputstacksegmentcodehere

sdb256dup(?

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

movax,stack

movss,ax

movsp,offsets

movsi,offsetbuf

movcx,256

xorax,ax

xorbx,bx

xordh,dh

next:

mov[si],al

cmpal,0h

jzzero;

如果这个数为0,则0的个数加一

cmpal,80H

janega;

同理负数个数加一

jmppos

zero:

incdh

deccx

incal

jmpnext2

nega:

incbl

incsi

pos:

incbh

jmpnext2

next2:

loopnext

mov[si],dh;

将等于0的数的多少装入dh,再放在数据块之后

mov[si],bx

movcx,count

zrbh:

movbh,16;

每行显示16个,便于观看

next3:

moval,[si]

movbl,al

shral,1;

右移4位,比较高四位

shral,1

cmpal,0ah;

判断高四位是字母还是数字

jcjia30;

如果是数字,加30h变成对应的ASCII码

addal,07h;

如果是字母,则要加37

jia30:

addal,30h

callDIS;

显示高四位

INT21H

moval,bl;

恢复原来的数

andal,0fh;

屏蔽高四位

cmpal,0ah

jcjia30a

addal,7h

jia30a:

callDIS

moval,20h;

在两个数之间加一个空格,便于显示

loopnext4;

循环完毕,当不再loop时,跳转至程序结束的地方

jmpstop

next4:

decbh

jnznext3

moval,0ah;

若有16个数,则送回车,换行0ah,0dh

MOVAH,0BH

moval,0dh

jmpzrbh;

继续处理下一行

inputcodesegmentcodehere

stop:

movah,4ch

int21h

DISprocnear

movdl,al

movah,2

int21h

movdl,al

DISendp

codeends

endstart

3.datasegment

overdb'

errorcharacter!

$'

sdb512dup(?

crlfmacro;

定义宏,送回车换行符

movdl,0dh

movdl,0ah

int21H

endm

main:

callhexbin

crlf

callbindec

jmpmain

;

接受的十六进制数转化为二进制数

hexbinprocnear

newchar:

movah,01h

cmpal,0dh

jzretu;

键入回车,结束本组输入

cmpal,30h

jlexit;

若输入小于30h,不是十六进制的字符

cmpal,10;

与9比较

jbaddto;

此时字符为0~9之间,直接转化为ASCII码来显示即可

SUBAL,30H

JLEXIT

CMPAL,09

JLEADDTO

subal,07;

若键入的字符不是0~9,则在判断是否属于大小写a~f

JLexit

cmpal,0fh

JGNEXT

若输入无误,将输入的数向bx里面存

addto:

movcl,4

shlbx,cl;

键入的字符左移四位,移入高位

movah,0

addbx,ax

jmpnewchar

movah,4ch

subal,20h

jLexit

jGexit

jmpretu;

retu是什么?

输入有误时,提示输入错

exit:

movdx,offsetover

movah,09h

CRLF

retu:

ret;

子程序结束

hexbinendp

将二进制转化为十进制的子程序,通过除十取余来实现

bindecprocnear

movcx,10000

calldiv_d

movcx,1000

movcx,100

movcx,10

movcx,1

ret

bindecendp

将数字显示出来

div_dprocnear

CRLF

movax,bx;

被除数的低十六位

movdx,0;

被除数的高十六位

divcx

movbx,dx;

余数在dx中,然后将其转入bx

addal,30h;

商在ax中

movdl,al;

把商显示出来

ret

div_dendp

3.程序流程图

①、

.

②、

③、

三、实验结果

1.

2.

3.

四、实验总结

本次实验让我对汇编语言有了新的认识,用一种新的眼光去认识汇编语言,也加强了自己对汇编语言的使用能力。

本次实验也遇到了很多困难,通过查资料,相互讨论找到了问题的解答方法。

有很多错误都是细节导致了,这说明我需要让自己更加的细心,认真。

还有些问题是基础知识掌握不牢固,我需要重新多翻看课本。

本学期的实验课程适中,我们实验课程不少但也不太多。

建议课程上老师多演示一些实验例子,谢谢。

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

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

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

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