资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
微型计算机原理上机报告王劼 13040310056实验一 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有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跟踪执行相加及送和数指令,观察寄存器及标志位变化 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 从上一断点运行至新断点停,已完成求和并存入指定结果单元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 自己设计一段小程序验证补码的加法、进位、溢出的概念;参考程序(可对数据进行修改):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。程序:STACK 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截图: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 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:STACKSTART: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 12DATA 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题目:求某数据区内负数的个数。 设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个检查区内的每一个数据,然后将所有数据中凡是符号位为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 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 DUP(?)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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号