实验四五六.docx
《实验四五六.docx》由会员分享,可在线阅读,更多相关《实验四五六.docx(14页珍藏版)》请在冰豆网上搜索。
实验四五六
实验四屏幕字符显示程序
实验目的
通过实验掌握下列知识:
1、8086指令:
JMP,ROR,XOR,HLT。
2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。
3、IBM-PC机的ASCII码表及控制字符。
4、利用^Break(CTRL+BREAK)退出程序的方法及局限性。
实验内容及步骤
一、利用INT2109H号功能调用显示字符串
1、用A命令在100H处键入下列程序:
MOVAH,9
MOVDX,110
INT21
INT20
2、用A命令在110H处键入下列字符串的ASCII码:
DB'Thisisasample!
$'
3、用N命令和W命令将此程序(包括数据区)存入文件名为AA.COM的磁盘文件中。
(存入前BX:
CX必须置为文件长度值)。
4、用Q命令退出DEBUG。
5、在DOS命令下键入AA,运行此程序,即在屏幕上显示'Thisisasample!
'字符串,若不出现,用DEBUG检查程序有无错误。
二、利用INT21H2号功能显示字符
1、用A命令在100H处键入下列程序:
XORDL,DL
MOVCX,100
LOP:
MOVAH,2
INT21
INCDL
PUSHCX
MOVCX,8
DELY:
PUSHCX
MOVCX,0
J:
LOOPJ
POPCX
LOOPDELY
POPCX
LOOPLOP
INT20
2、用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。
仔细观察每个字符,和IBM-PCASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?
3、按CTRL+BREAK退出此程序,若一次不行可多做几次。
三、自编一个程序,要求显示AX的内容,即能显示AX=xxxx。
调试时AX的内容可用R命令赋值,也可用MOV指令赋值。
实验五条件转移指令
实验目的
通过实验掌握下列知识:
1、8086指令:
JZ,JNZ,JC,JNC,CMP,SHR。
2、程序:
用字符搜索法确定字符串长度。
3、程序:
十六进制数化为ASCII码的一般方法。
实验内容及步骤
一、用字符搜索法确定字符串长度
1、用A命令在100H开始的内存处键入下列程序:
JMPSTART
DB'Thisistheprogramtomeasure'
DB'thelengthofastring!
$'
START:
MOVBX,102
MOVAL,24
XORCL,CL
LOP:
CMPAL,[BX]
JZEXIT
INCBX
INCCL
JMPLOP
EXIT:
INT3
2、用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?
3、
注:
MOVAL,24中24H为$的ASCII码。
二、十六进制数转化为ASCII码的一般方法(显示内存内容)
1、用A命令在100H处键入下列程序:
MOVSI,0
MOVBL,10
LOP:
MOVDL,[SI]
MOVCL,4
SHRDL,CL
CMPDL,0A
JCJ1
ADDDL,7
J1:
ADDDL,30
MOVAH,2
INT21
MOVDL,[SI]
ANDDL,0F
CMPDL,0A
JCJ2
ADDDL,7
J2:
ADDDL,30
MOVAH,2
INT21
MOVDL,20
MOVAH,2
INT21
INCSI
DECBL
JNZLOP
INT20
2、用N,W命令将此程序用CC.COM文件名存入磁盘。
3、用Q命令退出DEBUG。
4、在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的
16个字节的内容,若有错误,用DEBUG检查之。
5、自编程序:
修改上面程序,使除以十六进制数形式显示内存内容外,还能在其右边显示该十六进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。
DATASSEGMENT
;此处输入数据段代码
DATASENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
;此处输入代码段代码
MOVSI,0H
MOVBL,10H
LOP:
MOVDL,[SI]
MOVCL,4H
SHRDL,CL
CMPDL,0AH
JCJ1
ADDDL,7H
J1:
ADDDL,30H
MOVAH,2H
INT21H
MOVDL,[SI]
ANDDL,0FH
CMPDL,0AH
JCJ2
ADDDL,7H
J2:
ADDDL,30H
MOVAH,2H
INT21H
MOVDL,20H
MOVAH,2H
INT21H
MOVDL,[SI]
MOVDH,07H
CMPDH,[SI]
JNCJ3
MOVDH,0DH
CMP[SI],DH
JNCJ3
MOVDL,2EH
J3:
MOVAH,2H
INT21H
MOVDL,20H
MOVAH,2H
INT21H
INCSI
DECBL
JNZLOP
INT20H
MOVAH,4CH
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
6、
三、综合程序(选做):
测量一字符串长度,并用十六进制数显示之
程序内容:
JMPSTART
DB'Thisisaprogramtomeasurethelengthofastring。
'
DB0D,0A
DB'thelengthofthestringis:
$'
START:
MOVAH,9
MOVDX,102
INT21
MOVBX,101
MOVAL,24
MOVDH,FF
LOP:
INCBX
INCDH
CMPAL,[BX]
JNZLOP
MOVCH,2
MOVCL,4
LOP1:
ROLDH,CL
MOVDL,DH
ANDDL,0F
ADDDL,30
CMPDL,3A
JCJ
ADDDL,7
J:
MOVAH,2
INT21
DECCH
JNZLOP1
INT20
键入此程序,存入DD.COM文件中并在DOS命令状态下直接运行之,若未出现预期结果,用DEBUG检查有否错误?
实验六汇编语言程序上机过程
实验目的
1、掌握常用工具软件EDIT,MASM和LINK的使用。
2、伪指令:
SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。
3、利用INT21H的1号功能实现键盘输入的方法。
4、了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法。
实验内容
DATASEGMENT
MESSAGEDB'THISISASAMPLEPROGRAMOFKEYBOARDANDDISPLAY'
DB0DH,0AH,'PLEASESTRIKETHEKEY!
',0DH,0AH,'$'
DATAENDS
STACKSEGMENTPARASTACK'STACK'
DB50DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESSAGE
MOVAH,9
INT21H
AGAIN:
MOVAH,1
INT21H
CMPAL,1BH
JEEXIT
CMPAL,61H
JCND
CMPAL,7AH
JAND
ANDAL,11011111B
ND:
MOVDL,AL
MOVAH,2
INT21H
JMPAGAIN
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验步骤
1、使用文字编辑工具(常用EDIT或记事本)将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3、用TYPE命令显示产生的.LST文件。
4、用LINK将.OBJ文件连接成可执行的.EXE文件。
5、在DOS状态下运行LINK产生的.EXE文件。
即在屏幕上显示标题并提示你按键。
每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。
按ESC键可返回DOS。
若未出现预期结果,用DEBUG检查程序。