计算机硬件基础实验报告书Word格式文档下载.docx
《计算机硬件基础实验报告书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机硬件基础实验报告书Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
(3)R查看寄存器内值
(4)T单步执行A编辑命令
(5)G命令
(6)U反编汇编命令
(7)W写入文件
(8)验证加减乘除
(9)验证带进为的加法、带错位的减法
(4)完成时间
2012年5月21日
实验二分支程序实验
1.实验目的:
掌握分支程序的设计方法
掌握利用DEBUG修改参数、检查结果的方法。
掌握汇编语言源程序的编辑、汇编、连接及调试过程。
2.
实验内容
(1)编写一个程序,显示AL寄存器中的两位十六进制数
编写一个程序,判别键盘上输入的字符;
若是1-9字符,则显示之;
若为A-Z或a-z字符,均显示“c”;
若是回车字符<
CR>
(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
(1)显示AL寄存器中的两位十六进制数
运行过程中截图:
实验源代码:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,3AH;
假定为3AH
MOVBL,AL
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBENEXT1
ADDDL,7
NEXT1:
ADDDL,30H
MOVAH,2
INT21H
MOVDL,BL
ANDDL,0FH
JBENEXT2
NEXT2:
MOVAH,4CH
CODEENDS
ENDSTART
(2)判别键盘上输入的字符
程序源代码:
MOVAH,1
INT21H;
等待键入字符,送给AL
CMPAL,0DH;
判断是否是回车符
JZDONE;
如果是回车符,则转到DONE退出程序
CMPAL,'
0'
JBNEXT
9'
JACHARUP
JMPSTART
CHARUP:
CMPAL,41H
JBNEXT
CMPAL,5AH
JACHRDN
DISPC:
MOVDL,'
C'
MOVAH,2
NEXT:
CHRDN:
CMPAL,61H
CMPAL,7AH
JANEXT
MOVDL,'
JMPNEXT
DONE:
ENDSTART
实验三循环程序实验
掌握循环程序的设计方法
进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。
学会针对不同的问题,选用不同的组织循环的方法。
编写一个程序,显示AL寄存器中的两位十六进制数
MOVAL,3BH
INT21H
CMPAL,0DH
JZDONE
4.实验时间
2012年5月21日
实验四子程序实验
(一)
1.
实验目的
掌握主程序与子程序之间的调用关系及调用方法。
掌握子程序调用过程中近程调用与远程调用的区别。
掌握通过堆栈转送参数的方法。
2.
实验内容
(1)将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCI码,在屏幕上显示出来。
要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示.
编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数).
3.
实验结果
(1)二进制转换成两位十六进制数
运行过程中的截图:
DATASEGMENT
BUFDB0ABH,0CDH,01H,02H,03H
DB3AH,4BH,5CH,6FH
DATAENDS
CODE,DS:
DATA
MOVAX,DATA
MOVDS,AX
MOVCX,10
LEABX,BUF
AGAIN:
MOVAL,[BX]
CALLHEXASC
INCBX
LOOPAGAIN
HEXASCPROCNEAR
PUSHCX
POPCX
CALLDISP
RET
HEXASCENDP
DISPPROC
JBENEXT
DISPENDP
CODEENDS
(2)统计‘b’的个数并显示‘b’及其个数
CHARDB'
b'
BUFDB50H,?
50HDUP(?
)
CRLFDB0DH,0AH,'
$'
DATAENDS
MCODESEGMENT
MCODE,DS:
LEADX,BUF
MOVAH,0AH
LEADX,CRLF
MOVAH,9
LEASI,BUF
MOVCL,[SI+1]
MOVCH,0;
CX中为字符串长度
INCSI
INCSI;
SI指向串首址TABLE
MOVAL,CHAR
MOVAH,0;
AX中为待查字符
PUSHSI
PUSHAX;
参数送堆栈
CALLFARPTRCHECK
MOVDL,CHAR
POPAX;
统计个数在AL中,个数不能超过一位16进制数
ANDDL,0FH
INT21H;
显示统计个数
MCODEENDS
SCODESEGMENT
SCODE
CHECKPROCFAR
PUSHBP
MOVBP,SP
MOVSI,[BP+10]
MOVCX,[BP+8]
MOVAX,[BP+6]
XORAH,AH
CMPAL,[SI]
JNENEXT1
INCAH
INCSI
MOVAL,AH
MOV[BP+10],AX
POPBP
RET4
CHECKENDP
SCODEENDS
子程序实验
(二)
了解多模块程序设计方法
学会使用PUNLEC和EXTRN伪指令解决模块间的符号(如变量,标号等)通信问题
编写一个字程序,将主程序设定的内存中字符串的小写字母转换成大写字母并显示出来,主程序用另一个模块编写
编写一个子程序,将主程序指定的字符所在的地址返回给主程序,字符串与主程序在同一个模块
3.
实验结果
(1)字符串中小写字母转换成大写字母
运行中的结果:
主程序5-1.asm代码如下:
EXTRNDNTOUP:
FAR
PUBLICSTRING1,STRING2
STRING1DB'
Iloveus,yesornot?
YES!
'
'
STRING2DB80DUP(?
MOVDS,AX
CALLFARPTRDNTOUP
子程序DNTOUP.asm代码如下:
PUBLICDNTOUP
EXTRNSTRING1:
BYTE,STRING2:
BYTE
DNTOUPPROCFAR
MOVBX,0
CYCLE:
MOVAL,STRING1[BX]
CMPAL,24H;
是否是STRING1结尾
JZDONE;
是"
$"
转DONE
CMPAL,61H;
是小写字母吗?
JBNEXT;
不是转NEXT
SUBAL,20H;
转为大写字母
MOVSTRING2[BX],AL
JMPCYCLE
MOVAL,'
MOVSTRING2[BX],AL;
补一个$
MOVDL,0DH
MOVAH,2
MOVDL,0AH
显示回车换行
LEADX,STRING1
显示源串内容
回车换行
MOVDX,OFFSETSTRING2
显示转换后的大写串
DNTOUPENDP
ENDDNTOUP
(2)将主程序指定的字符所在的地址返回给主程序
运行结果截图:
主程序5-2.asm代码如下:
EXTRNFINDC:
PUBLICSTRN
STRNDB'
LIANTINGISASTUDENT$'
ADDRDW?
CALLFARPTRFINDC
MOVADDR,DI
ENDSTART
子程序FINDC.asm代码如下:
PUBLICFINDC
EXTRNSTRN:
FINDCPROCFAR
LEADI,STRN
CMPBYTEPTR[DI],'
JZDONE
CMPAL,[DI]
JNZNEXT
DONE1:
INCDI
JMPAGAIN
MOVDI,0FFFFH;
找不到返回0FFFFH
JMPDONE1
FINDCENDP
2012年5月22日
字符处理程序实验
1.实验目的
(1)熟悉串操作指令的功能与应用
(2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。
2.实验内容
(1)字符串统计。
自STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。
(2)在给定的字符串中,删除重复的字符,其余的字符向前递补。
(1)字符串统计
STRNDB80DUP(?
DATA,ES:
MOVAX,DATA
LEADI,STRN
MOVCL,0
MOVAH,1
CMPAL,0DH;
判断是否是回车
MOV[DI],AL
INCCL
LEASI,STRN
MOVCH,0
MOVBL,0
CLD;
告诉SI向前移动1
LODSB
判断是否和a相同
JBNEXT;
小于a转向NEXT
CMPAL,7AH;
判断是否和z相同
JANEXT;
大于z转向NEXT
INCBL;
BL自动加1
LOOPCYCLE
MOVAL,BL
MOVAH,0
MOVCL,10
DIVCL
ADDAX,3030H
PUSHAX
POPAX
XCHGAH,AL
MOVAH,2;
显示
MOVAH,4CH;
退出程序
ENDSTART
(2)在给定的字符串中,删除重复的字符,其余的字符向前递补
LENDB?
MOVES,AX
MOVCL,0
CMPAL,0DH
MOV[SI],AL
MOVLEN,CL
DECSI
REPET:
POPDX
DECCX
JENEXT1
MOVAL,[SI]
CMPAL,0
COMP:
JNEGOON
MOVBYTEPTR[SI],0
GOON:
LOOPCOMP
POPSI
DECDX
MOVCX,DX
JNZREPET
MOVCL,LEN
MOV[SI+LEN-1],'
JZDONE1
CALLDELE
INCCX
LEADX,STRN
DELEPROC
CLD
MOVDI,SI
REPMOVSB
DELEENDP