ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:37.39KB ,
资源ID:3134293      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3134293.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《计算机硬件技术基础》实验程序.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《计算机硬件技术基础》实验程序.docx

1、计算机硬件技术基础实验程序实验一:简单程序设计实验(1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。程序流程图略。 参考源程序:DATA SEGMENTNUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ?NUM4 DW ? DATA ENDSCODE SEGMENTASSUME DS:DATA, CS:CODESTART: MOV AX,DATA ;数据段寄存器初始化MOV DS,AXMOV AX, WORD PTR NUM1MOV D

2、X, WORD PTR NUM1+2DIV NUM2MOV NUM3,AX MOV NUM4,DXMOV AH,4CH ;正常返回DOS系统INT 21H CODE ENDSEND START(2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X1X2 拆为 X1 和 X2 两 部分,并以 0X1 和 0X2 的形式分别存入 ARY+1 和 ARY+2 单元中。程序流程图略。 参考源程序:DATA SEGMENT ARY DB 2AH,?,?DATA ENDSCODE SEGMENTASSUME DS:DATA, CS:CODE START: MOV AX,DATAMOV

3、DS,AXMOV SI,OFFSET ARY ;取ARY的偏移地址MOV AL,SI ;取16进制数至ALMOV BL,ALAND AL,0F0H ;取16进制数的高四位,即X1SHR AL,4MOV SI+1,AL ;存0X1MOV AL,BLAND AL,0FH ;取16进制数的低四位,即X2MOV SI+2,AL ;存0X2MOV AH,4CH INT 21HCODE ENDSEND START实验二:分支程序设计实验(1)编写一个字符比较程序,比较 3 个无符号字节数 A,B,C 的大小,并根据比较结果 对变量 K 赋值:如果 3 个数不相等,则 K=0;如果 3 个数中有两个相等,则

4、 K=1; 如果 3 个数都相等,则 K=2。程序流程图略。 参考源程序:DATA SEGMENT ;定义待比较数A、B、C,比较结果KA DB 20H B DB 20H C DB 20H K DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AX MOV AL,ACMP AL,B ;对A、B进行比较,不相等则转到COMP2JNE COMP2 ;相等则比较A、CCMP AL,CJNE K1 ;A、C不相等则K=1JMP K2 ;A、C相等则K=2COMP2: MOV BL,B CMP BL,CJE

5、K1 ;对B、C进行比较,相等则K=1CMP AL,CJE K1 ;对A、C进行比较,相等则K=1K0: MOV K,0JMP EXIT K1: MOV K,1JMP EXIT K2: MOV K,2EXIT: MOV AH,4CHINT 21HCODE ENDSEND START(2)编写一个能实现下列表达式的程序:N = A + BA B设 A,B,C 为小于 128 的正整数。 A B + C程序流程图略。 参考源程序:DATA SEGMENTA BA DB 22H ;定义 A、B、C、N B DB 10HC DB 01H N DB ?DATA ENDSCODE SEGMENTASSUM

6、E CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXMOV AL, A CMP AL, BJG CALCUL ;A 小于或等于 B 则 N=A+BADD AL,B JMP EXITCALCUL: SUB AL, B ADC AL, CEXIT: MOV N, AL MOV AH,4CH INT 21HCODE ENDSEND START实验三 循环程序设计实验(1)将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符 因含有奇数个“1”而加上了校验位。统计结果存于N单元中。程序流程图略。 参考源程序:DATA SEGMENTS

7、TRN DB What$ ;任意定义一个字串,以“$”结尾COUNT EQU $-STRN N DB ?BUF DB COUNT DUP(?) DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX, DATAMOV DS, AX MOV AX, DATA MOV ES, AXLEA SI, STRN LEA DI, BUFMOV CX, COUNT MOV AL, 0LP1: MOV BL, SI ;逐个取字符进行判断AND BL, BL ;自己和自己做与运算JP NEXT ;根据 PF 标志位的变化进行跳转INC ALOR BL

8、, 80H NEXT: MOV DI, BLINC SI INC DI LOOP LP1MOV N, AL MOV AH, 4CHINT 21HCODE ENDSEND START(2)在 FIRST 开始的一片连续的数据区中存放着 100 个数据,编写一个程序,统计第 1个数据0之前的数据个数。 程序流程图略。 参考源程序:DATA SEGMENTFIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H ;任取 9 个数做演示COUNT EQU $-FIRST NUM DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:D

9、ATA START: MOV AX,DATAMOV DS,AXMOV DL, 0 ;计数值初始为 0MOV CX,COUNTMOV BX, OFFSET FIRSTLP1: MOV AL, BX ;每次取一个数,与 0 比较CMP AL, 00H JNE NEXTJMP EXIT ;找到 0 则退出NEXT: INC DL ;没找到 0 则计数值加 1INC BX LOOP LP1EXIT: MOV NUM, DL MOV AH, 4CH INT 21HCODE ENDSEND START实验四:子程序设计实验将BUF开始的10个单元中两位十六进制数转换成ASCII码,并在屏幕上显示出来。要求

10、码型 转换通过子程序HEXASC实现,参数传送采用寄存器传送方式。程序流程图略。 参考源程序: (1)实现方法一:远过程调用 DATA SEGMENTBUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-BUF ;定义任意长度的一段 BUF DATA ENDSSTACK1 SEGMENT STACKDB 100 DUP(?) ;设置足够深度的栈区STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AXMOV SI,O

11、FFSET BUF MOV CX,COUNTAGAIN: MOV AL,SI ;逐个取数MOV BL,ALSHR AL,4AND AL,0FH ;先对高字节部分转换(寄存器 AL 传参)CALL FAR PTR HEXASC ;调用子程序MOV DL,ALMOV AH,02H ;显示高字节部分对应的字符INT 21HMOV AL,BLAND AL,0FH ;再对低字节部分转换(寄存器 AL 传参)CALL FAR PTR HEXASC ;调用子程序MOV DL,ALMOV AH,02H ;显示低字节部分对应的字符INT 21HMOV DL,20HMOV AH,02H ;显示空格INT 21HI

12、NC SILOOP AGAINMOV AH,4CH INT 21HCODE ENDSCODEB SEGMENT ASSUME CS:CODEBHEXASC PROC FARCMP AL,09H ;判断是不是数字JA HEXATOF ;是字母则转到 HEXATOFADD AL,30H ;是数字则对应到数字的 ASCII 码JMP ENDHEXHEXATOF:ADD AL,37H ;是字母则对应到字母的 ASCII 码ENDHEX: RET HEXASC ENDP CODEB ENDSEND START(2)实现方法二:近过程调用DATA SEGMENTBUF DB 10H,2FH,0D0H,0F

13、EH,33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-BUF ;定义任意长度的一段 BUF DATA ENDSSTACK1 SEGMENT STACKDB 100 DUP(?) ;设置足够深度的栈区STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AXMOV SI,OFFSET BUF MOV CX,COUNTAGAIN: MOV AL,SI ;逐个取数MOV BL,ALSHR AL,4AND AL,0FH ;先对高字节部分做转换CALL HEXASCMOV

14、 DL,AL ;显示高字节部分对应的字符MOV AH,02H INT 21HMOV AL,BLAND AL,0FH ;再对低字节部分做转换CALL HEXASCMOV DL,AL ;显示低字节部分对应的字符MOV AH,02H INT 21HMOV DL,20H ;显示空格MOV AH,02H INT 21HINC SI ;继续循环或退出LOOP AGAINMOV AH,4CH INT 21HHEXASC PROC NEAR CMP AL,09HJA HEXATOF ADD AL,30H JMP ENDHEXHEXATOF:ADD AL,37H ENDHEX: RETHEXASC ENDPCODE ENDSEND START实验五:DOS 中断调用实验(1)如果从键盘上依次输入的是一个数字和一个字母,则输出“RIGHT”标记后结束程序, 否则输出标记“ERROR”后转向原出错处重做。试编程实现该功能。程序流程图略。 参考源程序:DATA SEGMENTMSG DB 0AH,0DH,RIGHT,0AH,0DH,$ WRN DB 0AH,0DH,ERROR,0AH,0DH,$DATA

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

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