




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
20132014学年第二学期 广东药学院 实验报告 实验课程名称:微型计算机技术及应用专业班级:电子信息工程12组号:第一组小组成员:谭浩敏(1205520131) 陈润强(1205520106) 刘赏源(1205520107)实验指导老师:何永玲(第一组) 实验二 汇编语言指令仿真组长:谭浩敏 组员:刘赏源、陈润强实验目的1. 学会用实验的方法验证理论,用理论来指导实验,进一步熟悉汇编语言开发环境。2. 深刻理解寻址方式的意义以及80X86指令的各种寻址方式。3. 深刻理解80X86各种指令的真正含义及功能。4. 掌握与数据有关的不同寻址方式。5. 继续熟悉实验操作软件的环境及使用方法。实验内容及要求一、 在emu8086中仿真简单指令1. 仿真简单指令,请按要求写出程序代码及实验步骤。2. 将实验结果与理论结果进行比较,以便深入理解80X86指令的各种寻址方式。3. 实验过程中遇到的问题及解决办法。4. 写出心得体会及还未理解的知识点。DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(1264H)=9DH,(1265H)=16H,(21350H)=88H,(21351H)=51H.下列各指令都在此环境下执行,在下列各小题的空格中填入相应个指令的执行结果。实验代码:MOV AX,1000HMOV DS,AX;不能直接给DS,SS赋值,只能通过通用寄存器MOV AX,2000HMOV SS,AX MOV AX,1A2BHMOV BX,1200HMOV CX,339AHMOV BP,1200HMOV SP,1350H MOV SI,1354HMOV 0150HBX,0A5HMOV 0151HBX,3CHMOV 0152HBX,0FFH MOV 0153HBX,26HMOV SI,52HMOV 1HSI,0E7HMOV 26A4H,9DHMOV 26A5H,16HMOV SS:1350H,88HMOV SS:1351H,51H ;在上面的环境下,以下一行行的运行MOV AX,1352H MOV AX, 1352H MOV 0150H BX, CH MOV AX, 0150HBP POP AX ADD SI, CX SUB BH, 0150H BXSI INC BYTE PTR 0152H BX INC WORD PTR 0150H BX SAR BYTE PTR 0150H BX, 1SAL BYTE PTR 0150H BX, 1 实验结果:(1) MOV AX,1352HAX=1352H(2) MOV AX,1352HAX=26FFH(3) MOV 0150HBX,CH(11350H)= 33H ,(11351H)=3CH(4) MOV AX,0150HBPAX=5188H(5) POP AXAX= 5188H ,SP= 1352H (6)ADDSI,CX (11354H)= ECH ,(11355H)= 1AH SF= 0 ,ZF= 0 ,PF= 0 ,CF= 1 ,OF= 0(7)SUB BH,0150HBXSIBH= 75H ,SF= 0 ,ZF= 0 ,PF= 0 ,CF= 1 ,OF= 0(8)INC BYTE PTR 0152HBX(11352H)=00H ,(11353H)= 26H ,CF= 0 ,(9)INC WORD PTR 0150HBX(11352H)= FFH ,11353H=26H ,CF=0(10)SAR BYTE PTR 0150HBX,1(11350H)=D2H ,CF=1 ,OF=0(11)SAL BYTE PTR O150HBX,1(11350H)=4AH ,CF=1 ,OF=1【思考题】指出下列指令中源操作数和目的操作数的寻址方式:(一定要注意分开写寻址方式)(1)MOV AX, 0AH (2)ADD BX, DX(3)PUSH CS (4)POP DS (5)MUL BL (6)MOV DX,1200H(7)MOVSB (8)SUB AX,5BP+DI解:(1)SRC为立即数寻址,DEST为寄存器寻址; (2)SRC为寄存器寻址,DEST为寄存器间接寻址; (3)SRC为寄存器寻址,DEST为隐含堆栈指针寄存器间接寻址; (4)SRC为隐含堆栈指针寄存器间接寻址,DEST为寄存器寻址; (5)SRC为寄存器寻址,DEST为寄存器寻址; (6)SRC为直接寻址,DEST为寄存器寻址; (7)SRC为寄存器间接寻址,DEST为寄存器间接寻址; (8)SRC为基址变址相对寻址,DEST为寄存器寻址;实验心得与体会:本次实验考察的是8086指令的寻址方式,我们组在实验课的时候准备不够充分,导致当堂实验效果不明显,不过我们在课后有一起讨论每条语句的意思,并且在听过老师课堂上的讲解后,逐步地理解了这个实验,希望在下次实验过程中做好更充分的准备,以便在实验的过程中达到好的效果。实验三 综合程序设计 第一组:谭浩敏、刘赏源、陈润强 【实验目的】1. 通过简单编程来理解80X86指令系统2. 掌握汇编语言程序的特点及格式3. 掌握定义和使用汇编语言的常量、标示符和表达式4. 掌握汇编语言编程技巧和编程方法。【实验内容一】实验内容1:用MOV指令实现两内存字节单元内容的交换代码:MOV 2035H,01HMOV 2045H,02HMOV AX,2035HMOV BX,2045HMOV 2035H,BXMOV 2045H,AX 实验内容2:把2060H地址开始的40个字节单元的内容与2080H地址开始的40个字节 单元内容互换。代码:DATA SEGMENT DATA ENDSSTACK SEGMENT ME1 DW 80H DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS DATA,SS:STACK,ES:DATASTART: MOV AX,1000H MOV DS,AX MOV AX,2000H MOV ES,AX MOV DI,2060H ;循环赋值,从偏移量2060H开始 MOV BX,1H MOV CX,28H ;循环次数40次,28H是16进制 LOOP1: MOV DI,BX INC BX INC DI DEC CX JNZ LOOP1 MOV DI,2080H MOV BX,2080H MOV CX,8 TEMP: MOV DX,BX ;此循环用来保存被覆盖的8个内存单元 MOV ES:DI,DX ;的数据,放在ES段中 INC DI INC BX DEC CX JNZ TEMP MOV DI,2080H ;给后40个内存单元循环赋值, MOV BX,50H;从偏移量2080H开始。 MOV CX,28H LOOP2: MOV DI,BX INC BX INC DI DEC CX JNZ LOOP2 MOV SI,00H ;交换40个字节内容 MOV DI,00H MOV CX,28H R: MOV BL,SI+2060H MOV BH,DI+2080H MOV DI+2080H,BL MOV SI+2060H,BH INC SI INC DI DEC CX JNZ R CODEENDS END 实验内容3:如果X50,转移到TOO-HIGH,在TOO-HIGH中将X显示出来; 如果带 符号减法XY引起溢出,则转移到OVERFLOW,在OVERFLOW中将 X、Y和X-Y的结果显示出来; 否则,计算|X-Y| ,并将结果存放在RESULT 中。(其中,X,Y,RESULT均为字变量)代码:DATA SEGMENT DAI DBX =:$ DAI2 DB Y =:$ DAI3 DB |X-Y| =:$ X DW -32768Y DW 32RESULT DW 0DATA ENDS STACKS SEGMENT DW 128 DUP(?) STACKS ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV AX,X CMP AX , 50 ;比较 JG TOO-HIGH ;如果(X)大于50,则转向 TOO-HIGH SUB AX,Y JO OVERFLOW ;溢出则转移 JNS NONNEG ;无符号,则转 NEG AX ;XY为正时,补码为其本身,为负时取补码刚好是它的相反数。 NONNEG: MOV RESULT , AX ;无溢出,取绝对值,并将结果存入RESULT HLT ;暂停 TOO-HIGH: MOVDX,OFFSET DAI MOVAH,09H INT21H MOV AX,X;取内存数到AX CALL SHOW1 ;显示十进制形式 MOV AH,7 ;暂停 INT 21H MOV AX,4C00H ;退出程序 INT 21H SHOW1: XOR CX ,CX MOV BX ,10 NX1: XOR DX,DX DIV BX OR DX,0e30H INC CX PUSH DX CMP AX,0 JNZ NX1 NX2: POP AX INT 10H LOOP NX2 RET OVERFLOW: MOVDX,OFFSET DAI ;显示X MOVAH,09H INT21H MOV AX,X;取内存数到AX CALL SHOW2 ;显示十进制形式 MOV AH,7 ;暂停 INT 21H MOV AX,4C00H ;退出程序 INT 21H SHOW2: XOR CX ,CX MOV BX ,10 NX3: XOR DX,DX DIV BX OR DX,0e30H INC CX PUSH DX CMP AX,0 JNZ NX3 NX4: POP AX INT 10H LOOP NX4 MOV DL,0AH MOV AH,02H INT 21H MOV DX,OFFSET DAI2 ;显示Y MOV AH,09H INT 21H MOV AX,Y;取内存数到AX CALL SHOW3 ;显示十进制形式 MOV AH,7 ;暂停 INT 21H MOV AX,4C00H ;退出程序 INT 21H SHOW3: XOR CX ,CX MOV BX ,10 NX5: XOR DX,DX DIV BX OR DX,0e30H INC CX PUSH DX CMP AX,0 JNZ NX5 NX6: POP AX INT 10H LOOP NX6 MOV DL,0AH MOV AH,02H INT 21H MOV DX,OFFSET DAI3 ;显示|X-Y| MOV AH,09H INT 21H MOV BX ,X SUB BX,Y MOV X,BX MOV AX,X;取内存数到AX CALL SHOW4 ;显示十进制形式 MOV AH,7 ;暂停 INT 21H MOV AX,4C00H ;退出程序 INT 21H SHOW4: XOR CX ,CX MOV BX ,10 NX7: XOR DX,DX DIV BX OR DX,0e30H INC CX PUSH DX CMP AX,0 JNZ NX7 NX8: POP AX INT 10H LOOP NX8 HLTCODE ENDSEND START【实验总结】内容一和内容二相对来说比较好理解,通过看一些实例,我们最终知道了应该怎么做,而内容三比较复杂,我们用了许多时间,不过最后经过组内的学习和讨论,终于做出来了。我们都从中收获到了许多新知识。实验四 内存块移动实验组长: 谭浩敏 组员:刘赏源,陈润强一、 实验目的1、熟悉实验系统的编程和使用。2、了解内存的移动方法。3、加深对存储器读写的认识。二、 实验内容实验内容1:用汇编语言编写程序实现以下运算,并将最终结果显示在屏幕上。假设变量X、Y、Z、V均为有符号的16位二进制。(V-(X*Y+Z-540)/X代码: DATA SEGMENT DAI1 DB 0AH,0DH,INPUT X,Y,Z,V ORDERLY, EG:+XXXX:$ DAI2 DB 0AH,0DH,TYPE IN THE NUMBER:$ DAI3 DB 0AH,0DH,NUMBER X,Y,Z,V ARE : $ DAI4 DB 0AH,0DH,RESULT W IS:$ DAI5 DB 0AH,0DH,EXTRA IS:$ BUF DB 10 DB 0 NUM DB 200 DUP(0) XDW0 YDW0 ZDW0 VDW0 WDW2 DUP(0)DATAENDSSTACKSEGMENT DB 200 DUP(0)STACKENDSCODESEGMENT ASSUME DS:DATA,CS:CODE,SS:STACKStart: MOV AX,DATA MOV DS,AX MOV DX,OFFSET DAI1 MOV AH,09H INT 21H INPUT: MOV CH,04H MOV DI,OFFSET X DU04: MOV DX,OFFSET DAI2 MOV AH,09H INT 21H MOV DX,OFFSET BUF MOV AH,0AH INT 21H MOV CL,BUF1 DEC CL MOV AX,0 MOV SI,3H1: MOV BX,10 MUL BX MOV BL,BUFSI SUB BL,30H ADD AX,BX INC SI DEC CL JNZ H1 CMP BUF2,- JNE NONEGX NEG AX NONEGX: MOV DI,AX INC DI INC DI DEC CH JNZ DU04 MOV DX,OFFSET DAI3 MOV AH,09HINT 21H MOV AX,X CALL SHOW MOV DL, MOV AH,02H INT 21H MOV AX,Y CALL SHOW MOV DL, MOV AH,02H INT 21H MOV AX,Z CALL SHOW MOV DL, MOV AH,02H INT 21H MOV AX,V CALL SHOWMOV AX,XIMUL YMOV CX,AXMOV BX,DXMOV AX,ZCWD ADD CX,AXADC BX,DXSUB CX,540SBB BX,0MOV AX,V CWDSUB AX,CXSBB DX,BX IDIV XMOV W,AXMOV W+2,DXMOV DX,OFFSET DAI4 MOV AH,09HINT 21H MOV AX,W CALL SHOWMOV DX,OFFSET DAI5 MOV AH,09HINT 21H MOV AX,W+2CALL SHOWMOV AH,4CHINT 21H SHOW: CMP AX,0 JG LOOP1 PUSH AX MOV DL,- MOV AH,02H INT 21H POP AX NEG AX LOOP1: XOR CX,CX MOV BX,10 Q0:XOR DX,DX DIV BX OR DX,0E30H PUSH DX INC CX CMP AX,0 JNE Q0 Q1:POP AX INT 10H LOOP Q1 RET CODEENDSEND START3、 实验体会这次实验的难点主要在于各个数的输入与输出,汇编的数字输入要考虑很多问题,比如有符号数与无符号数,这对于不熟悉汇编的我们相对较难。实验五 循环程序设计组长:谭浩敏 组员:刘赏源、陈润强【实验目的】:1. 学会思考程序的不足,并找出改进办法。2. 熟悉使用DOS和BIOS功能调用。3掌握汇编语言循环程序的编写。【实验内容】:1. “第3章(3)汇编程序设计.ppt”中的作业。2.参考“第3章(3)汇编程序设计.ppt”关于排序的程序并完善和修改完成如下功能程序:能通过键盘随机地输入几个数据(16位有符号数),然后进行从小到大进行排序,最后结果显示在屏幕上。DATASEGMENT DAI1 DB 0AH,0DH,Please type in the number:$ DAI2 DB 0AH,0DH, The sort is:,0AH,0DH,$ BUF DB 10 DB 0 NUM DB 200 DUP(0) buf1DW10 dup(0) N EQU 4DATAENDSSTACKSEGMENT DB 200 DUP(0)STACKENDSCODESEGMENT ASSUME DS:DATA,CS:CODE,SS:STACKStart: MOV AX,DATA MOV DS,AX INPUT: MOV CH,N MOV DI,OFFSET buf1 DU04: MOV DX,OFFSET DAI1 MOV AH,09H INT 21H MOV DX,OFFSET BUF ;键盘输入四个数 MOV AH,0AH INT 21H MOV CL,BUF1 DEC CL MOV AX,0 MOV SI,3 H1: MOV BX,10 MUL BX MOV BL,BUFSI SUB BL,30H ADD AX,BX INC SI DEC CL JNZ H1 CMP BUF2,+ JZ NONEGX NEG AX NONEGX: MOV DI,AX INC DI INC DI DEC CH JNZ DU04 ;开始从小到大排序-MOVCX,NDECCXLOOP1:MOVDX,CXMOVBX,0LOOP2:MOVAX,BUF1BXCMPAX,BUF1BX+2JLELXCHGAX,BUF1BX+2MOVBUF1BX,AXL:ADDBX,2DECCXJNELOOP2MOVCX,DXLOOPLOOP1;-完成排序- MOV DX,OFFSET DAI2 MOV AH,09HINT 21H MOV DI,0 MOV CX,N A: push ax push dx push bx push cx MOV AX,BUF1DI CALL SHOW pop cx c: MOV DL, MOV AH,2 INT 21H pop bx pop dx pop bx INC DI INC DI LOOP A exit: MOV AH,4CH INT 21H SHOW: CMP AX,0 JG L1 PUSH AX MOV DL,- MOV AH,02H INT 21H POP AX NEG AX L1: XOR CX,CX MOV BX,10 Q0:XOR DX,DX DIV BX OR DX,0E30H PUSH DX INC CX CMP AX,0 JNZ Q0 Q1:POP AX INT 10H LOOP Q1 RETb:inc cx jmp c CODEENDSEND START3. (选做)权限管理:通过键盘输入六位数字,要求屏幕上显示的全都是“*”号,只有知道密码的人才能看到刚刚输入的六个数字。(提示:该程序实现的功能类似银行里的存折密码管理系统)。 data segment dai1 db =please input your psssword:,$ dai2 db 0ah,0dh,=your password is right!$ dai3 db 0ah,0dh,=your password is wrong!$ dai4 db 0ah,0dh,=please input numbers!,not words!$ buf1 db 6 dup(0) password db 123456 data endsstack segment dw 100 dup(0)stack ends code segment assume cs:code,ss:stack,ds:data start: mov ax,data mov ds,ax ;=完成密码的输入,将密码存入数组buf1= lea dx,dai1 mov ah,09h int 21h mov cx,6 mov di,0 a: mov ah,08h ;循环输入六次密码 ,调用八号无回显输入功能 int 21h mov buf1di,al mov dl,2ah ;显示*号 mov ah,02h int 21h inc di loop a ;=检查是否有出现非数字输入的错误= ;只要输入的字符的ascii的值不再3039之间就提示错误 mov cx,6 mov di,0 c: cmp buf1di,30h jb Notnumbers cmp buf1di,39h ja Notnumbers inc di loop c ;=进行数字密码的匹对= mov cx,6 mov di,0 mov si,0 b:mov ah,buf1si mov al,passworddi cmp ah,al jne wrong ;一旦匹配错误马上提示输入错误,转到exit inc di inc si loop b jmp right ;=显示错误输入错误信息、以及正确信息= wrong:lea dx,dai3 mov ah,09h int 21h jmp exit right:lea dx,dai2 mov ah,09h int 21h jmp exitNotnumbers:lea dx,dai4 mov ah,09h int 21h jmp exit ;= exit:mov ah,4ch int 21h code ends end start 初始密码为:123456实验六存储器扩展实验一、实验要求利用PROTEUS平台,进行存储器扩展。要求按照图6-1画图,并编写程序,实现存储器的写操作和读操作。要求从头到未组织一遍,包括建立asm文件,建立DSN文件,生成EXE文件(参阅本册实验指导P1520页内容)。二、实验目的1、熟练掌握Proteus软件的使用。2、理解存储器扩展原理及编程技巧。3、加深对存储器读写的理解。三、实验内容【实验内容1】在Proteus环境中完成程序仿真:程序要求把内存中一数据区(称为源数据块)传送到内存另一数据区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况,如下图所示。当源数据块首址大于目的块首址时,从数据块首地址开始传送数据。当源数据块首址小于目的块首址时,从数据块末址开始传送数据。(这是为什么?) 答:当源数据块首址小于目的块首址时,为防止数据段过长,超出源数据块首址和目的块首址之间的差值,造成数据传输过程中使源数据端的部分数据被改变,所以从源数据块末址开始传输。步骤1:在Proteus中打开一个空白设计文档,完成如图6-1的原理图制作,保存为“内存块移动.DSN”步骤2:在emu8086中编程,生成exe文件,存为memory.exeCODE SEGMENTASSUME CS:CODESTART: MOV AX,0MOV DS,AXMOV SI,1000HMOV CX,100MOV AL,1PU_IN:MOV SI,AL ;先存入1000H开始的100个字节数据为1到100INC ALINC SILOOP PU_INMOV CX,100MOV SI,1000HMOV DI,1100H ;FADR: MOV AL,SIMOV DI,ALINC SIINC DIDEC CXJNE FADRJMP $CODE ENDSEND START步骤3:Proteus仿真3、实验报告要求: (1)说说程序在对那些存储器单元(物理地址表示)进行移动数据,以及整个程序的功能是什么?答:程序在对1000H-1063H存储单元进行移动数据,整个程序的功能是对1000H-1063H这100个存储单元从1开始赋值到100,然后把这100个存储单元的数据移动到1100H1163H这100个存储单元。(2)修改参考程序,完成将地址从2300H单元开始的1000个存储单元的数据(数据从100到1100之间从小到大顺序排列。请回答,这一千个存储单元最终存放了100到哪个数据之间的数据?)移动到2000H单元开始的存储区存放功能。答:这一千个存储单元最终放了100-255之间的数据,之后又从0-255从小到大排序。因为是以字节定义的,一个字节最大只为255.(3)把这些程序放在emu8086中去远行,会有什么效果?对比一下这两个软件。可以看出,用protues观察内存情况比emu8086的范围大,而且方便。【实验内容2】1.请照着图5-1存储器奇偶存储体扩展图画好图。在8086芯片中编程,其代码如下:ORG 0100HMOV CX,0064H ;循环100次MOV DX,0000H ;置初值MOV BX,8001H ;MOV AX,0000HMOV DS,AX ;DS置零SIM:MOV BX,DLINC DLINC BXLOOP SIMINT 3H ;停止在INT 3H运行的截图如下:回答如下问题:(1) 两片6264的片选信号(CE和CS)是如何产生的?他们的地址范围是多少?答:CE和CS是6264的片选端,低电平有效,当8086地址总线输入地址值符合条件时,就会使译码器从Y0输入CE信号,其地址范围为:8000H0BFFFH(100000000000000010111111111111111111B(2) 他们的数据线为何连接不同?答:因为8086在访问外存是有一个特性,当AD0=0时,访问偶地址单元,数据从总线低八位传输;当AD0=1(BHE=0)时,访问奇地址单元,数据从总线的高八位传输。(3) 地址线为何不直接与CPU的AD0相连?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025物流配送经营权使用合同样本
- 眼科常见疾病
- 行业数据:中国树脂滑动轴承市场现状研究分析与发展前景预测报告
- 行业数据:中国双腔导管市场现状研究分析与发展前景预测报告
- 某文化传播公司商业计划书
- 中国数据中心服务器电源市场现状研究分析与发展前景预测报告
- 《腹部创伤的急救》课件
- 2025自动化设备维护服务合同范本
- 2025翻译服务的合同范本
- 2025关于健身房合作合同范本
- 支架法现浇连续梁(高速铁路桥梁施工)
- 反家庭暴力法演示课件
- 降低重症患者crrt相关低体温发生率的pdca 模板
- 消费者起诉状模板范文
- (完整版)外科护理学知识点整理
- 2019版《压力性损伤的预防和治疗:临床实践指南》解读
- 在那遥远的地方课件
- 基于JavaEE技术的网上家用电器销售系统的设计与实现
- 昆仑通态触摸屏及组态软件连接网关步骤
- 创业计划书案例-产品类-南大无醇酒创业完全版
- 《MCGS嵌入版组态应用技术》课件-项目6MCGS对象元件库构件的修改与制作
评论
0/150
提交评论