北邮 微机原理 第一次软件实验报告_第1页
北邮 微机原理 第一次软件实验报告_第2页
北邮 微机原理 第一次软件实验报告_第3页
北邮 微机原理 第一次软件实验报告_第4页
北邮 微机原理 第一次软件实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术汇编语言及其程序设计报告姓 名 学 院 信息与通信工程学院 专 业 班 级 学 号 班内序号 目录题目一3一、实验目的3二、实验任务及内容31设计思路32流程图33源代码44子程序清单4三、实验结果5题目二6一、实验目的6二、实验任务及内容61设计思路62流程图63源代码84子程序清单10三、实验结果10题目三11一、实验目的11二、实验任务及内容111设计思路112流程图123源代码134子程序清单16三、实验结果16题目一一、 实验目的编写一程序,在显示器上显示256个ASCII码,要求显示格式为每行显示16个字符,两个ASCII字符间空一格。二、 实验任务及内容1.2.

2、1 设计思路设DH寄存器初值为0。使用CX寄存器进行256次循环,循环中把 DH赋值给DL,利用AH=02H的DOS功能调用INT 21H,把DL中的字符和空格输出到屏幕上。进入下一循环前,调用子程序,将DX入栈,判断已输出个数是否为16的倍数,若是,输出回车换行到屏幕上之后,再进行下一循环过程;如果不是16的倍数,DX直接出栈。2 流程图图1.1 流程图3 源代码DATA SEGMENTDATA ENDSSTACK SEGMENT STACK DB 100H DUP(?);共256个数STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK

3、START: MOV AX,DATA MOV DS,AX ;MOV AX,STACK ;MOV SS,AX MOV AH,02H MOV DH,0 MOV CX,256 ;循环次数256次NEXT: MOV DL,DH INT 21H MOV DL,20H ;两数据间加一空格 INT 21H CALL DISP ;调用子程序 INC DH ;DH加1,对应下一个ASCII码 LOOP NEXT ;循环至CX为0STOP: MOV AH,4CH ;结束 INT 21HDISP PROC ;子程序,判断是否换行 PUSH DX AND DH,0FH ;是否是16的倍数,若是16的倍数,DH为0FH

4、 CMP DH,0FH ;与0FH比较 JNZ RETURN ;DH不为0FH MOV DL,13 ;回车,换行 INT 21H MOV DL,10 INT 21HRETURN: POP DX ;不是16的倍数 RETDISP ENDPCODE ENDS END START4 子程序清单子程序名:DISP功能:使每行显示16个字符所用寄存器:DX, FR入口参数:DX中的已循环次数出口参数:DX中的已循环次数三、 实验结果图1.2 编译和连接图1.3 运行结果题目二一、 实验目的教材P170第1、2、3题合到一起编一完整的程序。1) 编写一程序,把地址偏移量为100H单元开始的256个单元分别

5、写入00H,01H,02H,03H,.,FFH数据;2) 统计写入的数据块中0元素、正元素、负元素的个数,并分别把统计结果送入上述数据块之后的三个单元中;3) 用DOS功能调用显示第1题中数据块各单元(包括统计结果)内容。二、 实验任务及内容3.4.1 设计思路程序分为三个部分:第一个部分, SI存放数据块的偏移量,CX存入循环次数256次,将AL清零。使内存单元地址每增加一,AL也加一,使得存入的数是递增的;第二个部分,将BX和DH清零,BL存放正元素个数,BH存放负元素个数,DH存放0元素个数。循环256次,且每次循环都对当前内存单元中的数据进行判定,并将其对应的类型个数加一,最后将结果存

6、入数据块第三个部分,CX赋值为259,作为第一个循环,在每次循环中,把内存单元的数据转换成ASCII码并格式化输出,并且若CX不为0,进入第二个循环,否则结束;BH赋值为16,作为第二个循环,使16个数为一行,然后回车换行。2 流程图图2.1 主程序流程图图2.2 第一部分流程图 图2.3 第二部分流程图图2.4 第三部分流程图3 源代码DATA SEGMENT ORG 100H ;数据块在段中的偏移地址BUF1 DB 259 DUP(?) ;256个单元存放数据,3个单元存放结果COUNT EQU $-BUF1 ;数据块长度DATA ENDSCODE SEGMENT ASSUME CS:CO

7、DE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF1 MOV CX,COUNT-3 ;循环总次数256次 XOR AL,AL ;AL清零NEXT1: MOV SI,AL INC AL ;AL从00开始递增 INC SI LOOP NEXT1 ;完成第一步,写入00H,01H.FFH数据 MOV SI,OFFSET BUF1 MOV CX,COUNT-3 XOR BX,BX ;BL存放正元素个数,BH存放负元素个数 XOR DH,DH ;DH存放0元素个数NEXT2: MOV AL,SI CMP AL,0 JZ ZERO ;为0,转到

8、zero JS NEGAT ;为负数,转到negat JMP PLUS ;不为零不为负,即为整数,转到plusZERO: INC DH ;0个数加1 JMP NEXT3NEGAT: INC BH ;负元素个数加1 JMP NEXT3PLUS: INC BL ;正元素个数加1NEXT3: INC SI LOOP NEXT2 ;循环直到统计完256个数 MOV SI,DH ;存放统计结果 INC SI MOV SI,BX ;完成第二步,统计零、正、负元素个数并存放结果 MOV SI,OFFSET BUF1 MOV CX,COUNTZRBH: MOV BH,16 ;每行显示16个数NEXT4: MO

9、V AL,SI MOV BL,AL ;取出要显示的数,放在BL中 SHR AL,1 ;右移四位,先处理高四位 SHR AL,1 SHR AL,1 SHR AL,1 CMP AL,0AH ;判断是字母还是数字 JC JIA30 ;是数字,转到JIA30 ADD AL,7 ;是字母JIA30: ADD AL,30H ;数字加30H,字母加37H转换为ASCII码 CALL DISP ;调用显示子程序 MOV AL,BL ;开始处理低四位 AND AL,0FH ;高四位置零 CMP AL,0AH ;处理方法类似 JC JIA30A ADD AL,7JIA30A: ADD AL,30H CALL DI

10、SP MOV AL,20H ;显示一空格 CALL DISP INC SI LOOP NEXT5 JMP STOP ;CX为0时,即显示完259个数之后,结束NEXT5: DEC BH JNZ NEXT4 ;继续显示直到每行有16个数 MOV AL,0AH ;回车,换行 CALL DISP MOV AL,0DH CALL DISP JMP ZRBH ;继续处理下一行STOP: MOV AH,4CH INT 21HDISP PROC NEAR ;子程序,显示字符 MOV DL,AL MOV AH,2 INT 21H RETDISP ENDPCODE ENDS END START4 子程序清单子程

11、序名:DISP功能:使每行显示16个字符所用寄存器:AL, DL, AH入口参数: AL存放要显示的字符出口参数:无三、 实验结果图2.5 编译和连接图2.6 运行结果 每行显示16个数,先显示00H,01HFEH,FFH,再显示零元素个数01H,正元素个数7FH,负元素个数80H。题目三一、 实验目的教材P173第21题:编一程序,把键入的十六进制数转换成十进制数并在屏幕上显示出来。键入的最大数为FFFFH,若键入的不是十六进制数字,则显示出错提示。1) 在屏幕上显示转换的十进制数,键入的最大数为FFFFH;2) 若键入非十六进制数,则显示出错提示;3) 程序中至少用到一个子程序和一个宏指令

12、,若键入CTRL+C则返回系统。二、 实验任务及内容5.6.1 设计思路主程序中,先定义回车、换行的宏指令,再调用两个子程序,第一个子程序是输入十六进制数并判断是否溢出FFFFH,然后将输入的合理的十六进制数转换成二进制数;第二个子程序是将转换好的二进制数转换成十进制数并输出显示。第一个子程序首先判断键入的字符是否为合法十六进制字符,若合法,存入BX中,接着接收下一个新的字符,同时将上个字符左移4位,与刚键入的字符相加,存入BX中;若非法,则显示错误信息,返回开始处重新输入。若键入回车符,则本次键入的字符结束,进入转换程序。第二个程序它把二进制转换成十进制数。调用除法子程序,把BX中的若干位十

13、六进制数除以CX中的数,每次所得的商即是要转换成的十进制数,将其转换为ASCII码在屏幕上显示出来,并将余数存入BX返回。CX分别赋以10000,1000,100,10,1。2 流程图图3.1 主程序流程图图3.2 子程序HEXBIN流程图图3.3 子程序BINDEC流程图图3.4 子程序DEC-DIV流程图3 源代码NAME HEXDECCODESEGMENT ASSUME CS:CODEMSG DB'Error Number!','$'ERROF DB 'OVER FLOAT! (0FFFFH)','$'CRLF MACRO

14、;定义宏指令,回车换行 MOV DL,0DH ;送回车符 MOV AH,2 ;DOS调用,显示 INT 21H MOV DL,0AH ;送换行符 MOV AH,2 INT 21H ENDMSTART:MOV AX,SEG CODE MOV DS,AX ;给数据段赋值,与代码段同在一个段MAIN:CALL HEXBIN ;从键盘接受十六进制数据,并转换为二进制 CRLF ;回车换行宏指令 CALL BINDEC ;把二进制数转换为十进制数 CRLF ;调用宏指令,回车换行 JMP MAIN ;继续键入字符与转换;接收键盘键入的十六进制数据,并转换为二进制数子程序HEXBIN PROC NEAR

15、XOR BX,BX ;BX清零,存放键入的十六进制数MOV BP,0; ;键入的字符数NEWCHAR: MOV AH,01 ;DOS调用,接收键入的字符 INT 21H CMP AL,0DH ;若键入回车,则结束本组键入的数据 JZ RETU SUB AL,30H JL EXIT ;键入的字符小于0,为非法字符CMP AL,9JLE ADDTO ;键入的字符0-9转到移位处理 SUB AL,07H ;键入的字符大于9,判断是否为字母A-F CMP AL,0AH JL EXIT ;不是大于A的字母,为非法字符CMP AL,0FH ;若大于字母F,再判断是否为小写字母JG NEXTADDTO:MO

16、V CL,4 SHL BX,CL ;键入的字符左移4位,先键入的字符移向高位INC BP CMP BP,5 ;键入字符数不能超过四个JZ OVERFLOAT ;报错MOV AH,0ADD BX,AX ;把刚键入的字符与前面的字符合在一起JMP NEWCHAR ;再接收新的字符NEXT: SUB AL,20H ;判断是否为小写字母a-fCMP AL,0AH JL EXIT ;若小于a,则为非法字符 CMP AL,0FH JLE ADDTO JG EXIT JMP RETUOVERFLOAT: CRLF MOV DX,OFFSET ERROF MOV AH,09 INT 21HEXIT: CRLF

17、 ;调用回车换行宏指令MOV DX,OFFSET MSG ;显示非法字符信息 XOR BX,BXMOV AH,09INT 21HCRLFJMP NEWCHARRETU:RETHEXBINENDP;把二进制数转换为十进制数子程序BINDEC PROC NEAR MOV CX,10000 ;因键入的数最大为FFFFH=65535CALL DEC_DIVMOV CX,1000 ;键入数的千位CALL DEC_DIVMOV CX,100 ;键入数的百位CALL DEC_DIV MOV CX,10 ;键入数的十位CALL DEC_DIVMOV CX,1 ;键入数的个位CALL DEC_DIVCRLFRE

18、TBINDEC ENDPDEC_DIV PROC NEAR MOV AX,BX ;被除数的低16位在AX中MOV DX,0 ;被除数的高16位在DX中DIV CX ;32位除以16位MOV BX,DX ;余数在DX中,送入BXADD AL,30H ;商在AL中,转换为ASCII码 MOV DL,AL MOV AH,2 INT 21H RETDEC_DIV ENDPCODE ENDS END START4 子程序清单1) 子程序名:HEXBIN功能:接收键盘键入的十六进制数据,并转换为二进制数所用寄存器:BX, AH, AL, CL, DX, FR入口参数:无出口参数:转换后的二进制数,存放在BX中2) 子程序名:BINDEC功能:把二进制数转换为十进制数所用寄存器:CX, BX, AX, DX入口参数:BX中的转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论