西安电子科技大学微型计算机原理上机报告_第1页
西安电子科技大学微型计算机原理上机报告_第2页
西安电子科技大学微型计算机原理上机报告_第3页
西安电子科技大学微型计算机原理上机报告_第4页
西安电子科技大学微型计算机原理上机报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、微型计算机原理上机报告王劼验一 Debug程序的使用1由DOS进入DEBUG调试环境。(1) C:>DEBUG将调试程序装入内存注意:当机器控制权由DOS成功地转移给调试程序后,将显示“”号,它是DEBUG的状态提示符,表示可以接受调试子命令了。(2) R 显示CPU中各寄存器当前初始内容,请记录下列各项:AXBXCXDXBP=SI=DI=DS=ES=SS=SP=CS=IP= FLAG寄存器中的8个标志位状态值是:OFDFIFSFZFAFPFCFDEBUG用符号给出标志寄存器中8个标志位的当前状态,其含义如下表所示。标志位含义1的对应符号0的对应符号OF溢出OV

2、有NV无DF方向DN递减UP递增IF中断EI允许DI禁止SF符号NG负PL正ZF全零ZR零NZ非零AF辅助进位AC有NA无PF奇偶性PE偶PO奇CF进位CY有NC无截图:2用DEBUG调试简单程序例1 A CS:0106 MOV AX,1234MOV BX,2345MOV CX,0ADD AX,BXMOV CX,AXINT 20运行程序(注:执行程序时IP应指向要执行的指令,需要修改时 RIP 当前值 输入需要值 该处为0106 当然也可以在T或G命令中指出程序起始地址) R 显示各寄存器当前内容及首条指令 T 3 跟踪执行三条赋值传送指令,观察寄存器及标志位变化 T 2跟踪执行相加及送和数指

3、令,观察寄存器及标志位变化 G 执行软件中断指令INT 20,机器将显示“程序正常终止”的信息,并显示“”,表明仍处在DEBUG的调试控制状态下,注意未用T命令,因为我们不想进入到20H中断处理程序中去,P命令也可实现相同操作实验现象记录:观察每条指令执行后各相关寄存器值及标志位状态截图:例2 A CS:116MOV AX,0124MOV BX ,0126ADD AX,BXMOV 0128,AXINT 20DW 2222DW 8888DW 0设置断点分段运行程序GCS:116 11D 从指定入口运行程序,至断点11D停,可见两个数已取至AX,BX,但还没有求和G122 从上一断点运行至新断点停

4、,已完成求和并存入指定结果单元G 完成程序观看内存内容DCS:116 12A 显示本程序小段目标代码和数据单元内容UCS:116 12A 反汇编指定范围的内存内容-实验现象记录:通过反汇编,记录程序执行前指定范围的内存内容,并记录每条指令执行后各相关寄存器值及指定范围的内存内容)截图:例3 A CS:0192 MOV DX,19BMOV AH,9INT 21INT 20DB HELLO,WORLD! $P 命令单步执行实验现象记录:观察每条指令执行后各寄存器的变化,记录DX,AX的变化。思考:根据程序输入情况,考虑HELLO,WORLD!$在内存中的ASC码和地址范围截图:例4 自己设计一段小

5、程序验证补码的加法、进位、溢出的概念;参考程序(可对数据进行修改):A CS:0100MOV AL,74ADD AL,70MOV AL,7AADD AL,94MOV AL,43ADC AL,65INT 20P命令单步执行截图:实验二 汇编语言上机环境及基本步骤截图:实验三 顺序程序设计1.题目 计算XY=Z,将结果Z存入某存贮单元。本实验程序是2个16位,即32位运算,利用累加器AX,先求低16位和,并存入低地址存贮单元,后求高16位和,再存入高地址存贮单元。由于低位和可能向高位有进位,因而高位相加语句须用ADC指令,则低位相加有进位时CF=l,高位字相加时,同时加上CF中的1。程序:STAC

6、K SEGMENT DW 64 DUP(?)STACK ENDSDATA SEGMENT XL DW ? ;请在此处给X低位赋值 XH DW ? ;请在此处给X高位赋值 YL DW ? ;请在此处给Y低位赋值 YH DW ? ;请在此处给Y高位赋值 ZL DW ? ZH DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AX,XL ADD AX,YL MOV ZL,AX MOV AX,XH ADC AX,YH MOV ZH,AX INT 03HCODE ENDS END START截图

7、:2写出计算y=a*b+c-18的程序,其中a、b、c分别为3个带符号的8位二进制数。同1一样,写出上机过程,观察现象,记录结果。程序: DW 256 DUP(?) TOP LABEL WORDSTACK ENDSDATA SEGMENT DAT1 DB 34H DAT2 DB 56H DAT3 DB 0E7H DAT4 DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP MOV AL,DAT1

8、MOV BL,DAT2 IMUL BL MOV BX,AX MOV AL,DAT3 CBW ADD AX,BX SUB AX,18 MOV DAT4,AX MOV AH,4CH INT 21CODE ENDSEND START截图:实验四 分支程序设计 1求某数X的绝对值,并送回原处同上,写出上机过程,观察现象及记录结果。程序:STACK SEGMENT DW 256 DUP(?) TOP LABEL WORDSTACK ENDSDATA SEGMENT DAT1 DW 3456H,8192HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STA

9、CKSTART:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP MOV AX,DAT1 AND AX,AX JNS NEXT NEG AX MOV DAT1,AXNEXT:MOV AH,4CH INT 21CODE ENDSEND START截图: 2写出将一位十六进制数转换成对应的ASXII码的程序(只考虑大写字母)。同上,写出上机过程,观察现象及记录结果。程序:STACK SEGMENT DW 256 DUP(?) TOP LABEL WORDSTACK ENDSDATA SEGMENT DAT1 DB 12DA

10、TA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP MOV AL,DAT1 CMP AL,09 JBE NEXT1 CMP AL,15 JA NEXT3 ADD AL,07NEXT1:ADD AL,03H NEXT2:MOV AH,4CH INT 21NEXT3:MOV AL,0FFH JMP SHORT NEXT2CODE ENDSEND START截图:实验五 循环程序设计 1题目:求某数据区内负数的个数

11、。 设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个检查区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即可得到所包含负数的个数。参考程序:STACK SEGMENT DW 64 DUP(?)STACK ENDSDATA SEGMENT ORG 3000HDATA1 DB 16 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DI,OFFSET DATA1;设数据区首地址 MOV

12、 CL,DI ;送数据个数 XOR CH,CH ;CH清零 MOV BL,CH ;BL清零 INC DI ;指针指向第一个数据A1: MOV AL,DI TEST AL,80H ;数据首位是否为1 JE A2 INC BL ;负数个数累加A2: INC DI LOOP A1 MOV DI,BL ;存结果 INT 03HCODE ENDS END START截图:2.课堂讲的数据传送题,传送数据变为10个数,写出完整的程序并调试, 1) 将ADRS开始存放的10个字节的数据传送到ADRD开始的连续内存中。假设他们的段地址分别存放在DS和ES中。程序:STACK SEGMENT DB 256 DU

13、P(?)STACK ENDSDATA SEGMENT ADRS DB 10 DUP(?) ADRD DB 10 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,ES MOV AX,STACK MOV SS,AX LEA SI,ADRS LEA DI,ADRD MOV CX,100NEXT: MOV AL,SI MOV ES:DI,AL INC SI INC DI LOOP NEXT MOV AH,4CH INT 21H CODE ENDS

14、END START截图:2) 将ADRS开始存放的10个字节的数据传送到ADRD开始的连续内存中。假设他们的段地址分别存放在DS和ES中。如果传送过程中出现#时,立即停止传送。程序:STACK SEGMENT DW 256 DUP(?) TOP LABEL WORDSTACK ENDSDATA SEGMENT ADRS DB 10 DUP(?) ADRD DB 10 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV SS,AX MOV SP,OFFSET TOP

15、 LEA SI,ADRS LEA DI,ADRD MOV CX,100 MOV AL,SI CMP AL,'#' JE NEXT1NEXT2: MOV ES:DI,AL INC SI INC DI MOV AL,SI CMP AL,'#' LOOPNE NEXT2NEXT1:MOV AH,4CH INT 21HCODE ENDS END START截图:3.课堂讲的排序题,递减排列。程序:STACK SEGMENT DW 256 DUP(?) TOP LABEL WORDSTACK ENDSDATA SEGMENT DAT1 DB 16 DUP(?) DATMA

16、X DB ? DATMIN DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DI,OFFSET DAT1 MOV CL,DI XOR CH,CH MOV BL,DI+1 MOV DATMIN,BL MOV DATMAX,BL MOV AL,01HNEXT1:INC DI INC AL CMP CL,AL JS NEXT3 MOV BL,DATMIN CMP BL,DI+1 JS NEXT2 MOV BL,DI+1 MOV DATMIN,BL JMP NEXT2NEXT2:MOV BL

17、,DATMAX CMP BL,DI+1 JNS NEXT1 MOV BL,DI+1 MOV DATMAX,BL JMP NEXT1NEXT3:MOV AH,4CH INT 21CODE ENDSEND START 截图: 实验六 子程序设计1. 编写程序,统计一个字中的1的个数。分别采用段内调用和段间调用实现。程序:STACK SEGMENT DW 256 DUP(?) TOP LABEL WORDSTACK ENDSDATA SEGMENT DAT1 DW ? DAT2 DW ? DATA ENDSCODE1 SEGMENT ASSUME CS:CODE1,DS:DATA,SS:STACKS

18、TART:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOP MOV AX,DAT1 CALL FAR PTR NEXT POP AX ADD AX,BX MOV DAT2,AX MOV AH,4CH INT 21HCODE1 ENDSCODE2 SEGMENT ASSUME CS:CODE2NEXT PROC FAR MOV BX,0 MOV CX,08NEXT1:ROL AL,01 JNC NEXT2 INC BXNEXT2:LOOP NEXT1 RETNEXT ENDPCODE2 ENDS END START截图:

19、实验七 DOS系统功能调用1.在显示器上显示AZ 26个英文字母。参考程序:STACK SEGMENT DW 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV CX,001AH MOV BL,41H MOV AH,02HA1: MOV DL,BL INT 21H INC BL PUSH CX MOV CX,0FFFFHA2: LOOP A2 POP CX DEC CX JNZ A1 MOV AH,4CH INT 21HCODE ENDS END START截图:2.修改程序,使显示结果重复5次后退出。程序:STA

20、CK SEGMENT DW 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV DH,05HNEXT1:MOV CX,001AH MOV BL,41H MOV AH,02HNEXT2:MOV DL,BL INT 21H INC BL DEC CX JNZ NEXT2 DEC DH JNZ NEXT1 MOV AH,4CH INT 21HCODE ENDS END START截图:3.修改程序,在显示器显示:“HOW ARE YOU TODAY?”要求用AH=09H完成。程序:STACK SEGMENT DW 64

21、DUP(?)STACK ENDSDATA SEGMENT DAT1 DB 'HOW ARE YOU TODAY?$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET DAT1 MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END START截图:4.修改程序,在显示器显示:“HOW ARE YOU TODAY?”要求用AH=02H完成。程序:STACK SEGMENT DW 64 DUP(?)STACK E

22、NDSDATA SEGMENT DAT1 DB 'HOW ARE YOU TODAY?$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV DI,OFFSET DAT1 MOV CX,18NEXT:MOV DL,DI MOV AH,02H INT 21H INC DI LOOP NEXT MOV AH,4CH INT 21HCODE ENDS END START截图:实验八 字符串1、设在数据段中定义了:STR1 DB ASSEMBLE LANGUAGESTR2 DB 20

23、 DUP(?)利用字符串指令从左到右将STR1将中的字符串传送到STR2。程序:STR1 DB 'ASSEMENT LANGUAGE'STR2 DB 20 DUP(?)STACK SEGMENT DW 256 DUP(?) TOP LABEL BYTESTACK ENDSDATA SEGMENT STR1 DB 'ASSEMENT LANGUAGE' STR2 DB 20 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOV AX,DATA MOV DS,AX M

24、OV ES,AX MOV SP,OFFSET TOP MOV CX,20 LEA SI,STR1 LEA DI,STR2 CLDAGAIN: MOVSB LOOP AGAIN MOV AH,4CH INT 21HCODE ENDSEND START截图:2、设在数据段中定义了:STRING DB Today is Sunday & July 16,2000编写程序实现将STRING中的“&”用“/”代替并将替换后的字符串显示出来。程序:STACK SEGMENT DW 256 DUP(?) TOP LABEL BYTESTACK ENDSDATA SEGMENT STR1 DB

25、 'Today is Sunday & July 16,2000'DATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,ES:DATASTART:MOV AX,DATA MOV ES,AX MOV DI,OFFSET STR1 MOV CX,30 MOV AL,'&' CLDAGAIN: SCASB JZ FIND LOOP AGAIN MOV AH,4CH INT 21HFIND:MOV BYTE PTR ES:DI-1,'/' MOV CX,30 MOV DI,OFFSET STR1NEXT:MOV DL,ES:DI MOV AH,02H INT 21H INC DI LOOP NEXT MOV AH,4CH INT 21HCODE ENDSEND START截图:3、 编程实现将

温馨提示

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

评论

0/150

提交评论