实验四DOS功能调用.docx

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

实验四DOS功能调用.docx

《实验四DOS功能调用.docx》由会员分享,可在线阅读,更多相关《实验四DOS功能调用.docx(17页珍藏版)》请在冰点文库上搜索。

实验四DOS功能调用.docx

实验四DOS功能调用

福建农林大学金山学院实验报告

系:

信息机电工程专业:

电子信息年级:

09

姓名:

XXX学号:

092230051实验课程:

汇编语言

实验室号:

_605______实验设备号:

j2实验时间:

指导教师签字:

成绩:

实验四DOS功能调用

1.实验目的和要求

1.学会DOS中关于显示功能调用指令的用法。

2.领会修改显存方法显示字符。

2.实验环境

实验的硬件环境是:

IBM—PC机及其兼容机

实验的软件环境是:

操作系统:

DOS2.0以上;调试程序:

DEBUG.COM;文本编程程序:

EDIT.EXE、WPS.EXE;宏汇编程序:

MASM.EXE(或ASM.EXE);连接装配程序:

LINK.EXE;交叉引用程序:

CREF.EXE(可有可无)。

3.实验内容及实验数据记录

1、输入一个字符,显示出来

2、输入一个字符串,显示出来

3、buf开始的3个的16位二进制数用十六进制数的形式显示出来

(1)理解程序

(2)输入程序,汇编,运行(在DOS状态下输入:

文件名.EXE),观察结果。

(3)如果要分行显示,程序要如何修改?

DATASEGMENT

BUFDW4F59H,56A8H,0FF90H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

P:

MOVBX,BUF[SI]

MOVCH,4

L:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

CMPDL,10

JBNEXT

ADDDL,7

NEXT:

ADDDL,30H

MOVAH,2

INT21H

DECCH

JNZL

INCSI

INCSI

CMPSI,4

JNAP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4、运行下列程序,在屏幕的第1行,会显示一个字符X,理解程序段

STACKSEGMENT

DB128DUP(0)

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVAX,STACK

MOVSS,AX

MOVSP,128

MOVAX,0B800H

MOVES,AX

MOVAH,0;BIOS10H的0号功能,设置80X25的彩色字符模式

MOVAL,03H

INT10H

MOVAH,'X'

MOVES:

[160*1+40*2],AH

MOVAL,0

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5、显示

*********

*******

*****

***

*

6、编写程序,统计字缓冲区中的20个数据的正数、负数、0的个数,并将统计结果以16进制形式显示出来。

4.算法描述及实验步骤

1直接doss调用1号功能

2调用10号和2号功能显示字符串

3运行程序,输出结果为单行输出,把程序修改为

DATASEGMENT

MSGDB0DH,0AH,'$'

BUFDW4F59H,56A8H,0FF90H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

P:

MOVBX,BUF[SI]

MOVCH,4

L:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

CMPDL,10

JBNEXT

ADDDL,7

NEXT:

ADDDL,30H

MOVAH,2

INT21H

DECCH

JNZL

INCSI

INCSI

LEADX,MSG

MOVAH,09H

INT21H

CMPSI,4

JNAP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

则为分行输出。

4直接运行程序,则输出结果是‘x’

5输入以下程序运行

DSEGSEGMENT

MSGDB0DH,0AH,'$'

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVBX,9

LP:

MOVCX,BX

LOP:

MOVDL,'*'

MOVAH,2

INT21H

LOOPLOP

LEADX,MSG

MOVAH,09H

INT21H

DECBX

DECBX

CMPBX,1

JNLLP

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

编写程序,统计字缓冲区中的20个数据的正数、负数、0的个数,并将统计结果以16进制形式显示出来。

STACKSSEGMENTSTACK

DW128DUP(?

STACKSENDS

DSEGSEGMENT

BUFDB0,-1,2,4,3,-4,5,6,-7,0

RESULTDB0

DSEGENDS

CSEGSEGMENTPARAPUBLIC'CODE'

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVAX,0

MOVBX,0

MOVDX,0

LEASI,BUF

MOVCX,10

LOP:

CMPBYTEPTR[SI],0

JNEL1

INCDL;0的个数

JMPL3

L1:

JGL2

INCAL;负数的个数

JMPL3

L2:

INCBL;正数的个数

L3:

INCSI

LOOPLOP

MOVBH,0

CALLDISP;调用显示子程序,显示正数的个数

MOVBL,AL

MOVBH,0

CALLDISP;调用显示子程序,显示负数的个数

MOVBL,DL

MOVBH,0

CALLDISP;调用显示子程序,显示规划零的个数

MOVAL,0

MOVAH,4CH

INT21H

DISPPROC;显示BX中的数

PUSHAX

PUSHBX

PUSHDX

MOVCH,4

ROLL:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

CMPDL,9

JBENEXT1

ADDDL,07H

NEXT1:

ADDDL,30H

MOVAH,02H

INT21H

DECCH

JNZROLL

POPDX

POPBX

POPAX

RET

DISPENDP

CSEGENDS

ENDSTART

5.调试过程

3

该程序是将buf开始的3个的16位二进制数用十六进制数的形式显示出来,按程序输出结果

将程序输出结果改为分行显示

4

运行程序观察结果如下

6.实验结果

1doss运行程序结果如下

2显示字符串

3分行输出的结果

4

5

6

6、运行,显示结果为:

7.总结

学会DOS中关于显示功能调用指令的用法。

领会修改显存方法显示字符。

附录:

1

DATESEGMENT

DATEENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATE

START:

MOVAH,1

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2

DATASEGMENT

BUFDB20,?

20DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVAH,0AH

INT21H

MOVDL,0DH

MOVAH,2

INT21H

MOVDL,0AH

MOVAH,2

INT21H

MOVCL,BUF+1

MOVSI,0

L:

MOVDL,[SI+2]

MOVAH,2

INT21H

INCSI

LOOPL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3

DATASEGMENT

MSGDB0DH,0AH,'$'

BUFDW4F59H,56A8H,0FF90H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

P:

MOVBX,BUF[SI]

MOVCH,4

L:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

CMPDL,10

JBNEXT

ADDDL,7

NEXT:

ADDDL,30H

MOVAH,2

INT21H

DECCH

JNZL

INCSI

INCSI

LEADX,MSG

MOVAH,09H

INT21H

CMPSI,4

JNAP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5

DSEGSEGMENT

MSGDB0DH,0AH,'$'

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVBX,9

LP:

MOVCX,BX

LOP:

MOVDL,'*'

MOVAH,2

INT21H

LOOPLOP

LEADX,MSG

MOVAH,09H

INT21H

DECBX

DECBX

CMPBX,1

JNLLP

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

6、STACKSSEGMENTSTACK

DW128DUP(?

STACKSENDS

DSEGSEGMENT

BUFDB0,-1,2,4,3,-4,5,6,-7,0

RESULTDB0

DSEGENDS

CSEGSEGMENTPARAPUBLIC'CODE'

ASSUMECS:

CSEG,DS:

DSEG

START:

MOVAX,DSEG

MOVDS,AX

MOVAX,0

MOVBX,0

MOVDX,0

LEASI,BUF

MOVCX,10

LOP:

CMPBYTEPTR[SI],0

JNEL1

INCDL;0的个数

JMPL3

L1:

JGL2

INCAL;负数的个数

JMPL3

L2:

INCBL;正数的个数

L3:

INCSI

LOOPLOP

MOVBH,0

CALLDISP;调用显示子程序,显示正数的个数

MOVBL,AL

MOVBH,0

CALLDISP;调用显示子程序,显示负数的个数

MOVBL,DL

MOVBH,0

CALLDISP;调用显示子程序,显示规划零的个数

MOVAL,0

MOVAH,4CH

INT21H

DISPPROC

PUSHAX

PUSHBX

PUSHDX

MOVCH,4

ROLL:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

CMPDL,9

JBENEXT1

ADDDL,07H

NEXT1:

ADDDL,30H

MOVAH,02H

INT21H

DECCH

JNZROLL

POPDX

POPBX

POPAX

RET

DISPENDP

CSEGENDS

ENDSTART

 

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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