当前位置:文档之家› 微机汇编语言编程系统实验报告

微机汇编语言编程系统实验报告

微机系统实验报告实验一汇编语言编程实验一、实验目的(1)掌握汇编语言的编程方法(2)掌握DOS功能调用的使用方法(3)掌握汇编语言程序的调试运行过程二、实验设备PC机一台。

三、实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。

(2) 在屏幕上显示自己的学号姓名信息。

(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入“Q”或“q”时结束。

(4)自主设计输入显示信息,完成编程与调试,演示实验结果。

考核方式:完成实验内容(1)(2)(3)通过,完成实验内容(4)优秀。

实验中使用的DOS功能调用:INT 21H表3-1-1 显示实验中可使用DOS功能调用四、实验步骤(1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。

(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。

(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。

按F9连续运行。

(4)更改数据区的数据,考察程序的正确性。

五、实验程序DATA SEGMENTBUFFER DB '03121370konglingling:',0AH,0DH,'$'BUFFER2 DB 'aAbBcC','$'BUFFER3 DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXmov ah,09hmov DX,OFFSET BUFFERint 21hMOV SI,OFFSET BUFFER2lab1:cmp BYTE PTR [SI],'$'je lab2MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hadd SI,1jmp lab1lab2:mov ah,09hmov DX,OFFSET BUFFER3int 21hmov ah,01hint 21hcmp al,'q'je lab3mov BL,ALAND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C4ADD AL,07HC4: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,BLAND AL,0FH ;取低4位CMP AL,0AHJB C5ADD AL,07HC5: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hjmp lab2lab3:mov ah,4chint 21hCODE ENDSend START六、实验结果实验二数码转换实验一、实验目的(1)掌握不同进制数及编码相互转换的程序设计方法。

(2)掌握运算类指令编程及调试方法。

(3)掌握循环程序的设计方法。

二、实验设备PC机一台。

三、实验内容及说明(1)重复从键盘输入不超过5位的十进制数,按回车键结束输入;(2)将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;(3)如果输入非数字字符,则报告出错信息,重新输入;(4)直到输入“Q”或‘q’时程序运行结束。

(5)键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。

考核方式:完成实验内容(1)(2)(3)(4)通过,完成实验内容(5)优秀。

转换过程参考流程如图3-2-2所示。

十进制数可以表示为:D n*10n+D n-1*10n-1+…+D0*100=∑D i*10i其中D i代表十进制数1、2、3、…、9、0。

上式可以转换为:∑ D i*10i=(((D n*10+D n-1)*10+ D n-2)*10+…+ D1)*10+ D0由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位D n开始做乘10加次位的操作。

依此类推,则可求出二进制数结果。

表3-3-1 数码转换对应关系四、实验程序; PAGE 60,132;本实验将输入的ASCII码转换为二进制,要求输入位数小于5DATA SEGMENTMES DB 0AH,0DH,'The Ascii code of Decimal code are: $' MSG1 DB 0AH,0DH,0AH,0DH,0AH,0DH,'Please Input(Exit:q/Q):$'MSG2 DB 0AH,0DH,'Input: $'MSG3 DB 0AH,0DH,'Input Error, Please input again!',0AH,0DH,'$';BIN DB 2 DUP(0)BUF DB 30H,30H,30H,31H,35HDB 10H DUP(0)N DW 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV DI,OFFSET BUFCLCMOV DX,OFFSET MSG1MOV AH,09H ;显示字符串INT 21HMOV DX,OFFSET MSG2MOV AH,09HINT 21HA1: MOV AH,01H ;接收键盘输入INT 21HCMP AL,'Q'JZ EXITCMP AL,'q'JZ EXITCMP AL,39HJA ERRORINC NSTOSB ;将输入数据存放在BUF缓冲区中CMP AL,13JNE A1MOV CX,NDEC CXMOV BX,000AHMOV SI,OFFSET BUFMOV AH,0MOV DX,0LODSBCMP CX,1JE A3SUB AL,30H ;将BUF中数据转换为二——十进制数DEC CXA2: IMUL BXMOV DX,AXLODSBMOV AH,0A3: SUB AL,30HADD AX,DXLOOP A2MOV [SI],AXMOV DX,OFFSET MESMOV AH,09HINT 21HINC SI ;显示高字节CALL SHOWDEC SI ;显示低字节CALL SHOWMOV N,0LOOP STARTSHOW PROC NEARMOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;show characterMOV AH,06HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;show characterMOV AH,06HINT 21HRETSHOW ENDPEXIT: MOV AX,4C00HINT 21HERROR: MOV DX,OFFSET MSG3 MOV AH,09HINT 21HJMP STARTCODE ENDSEND START五、实验结果实验三基本IO口扩展实验一、实验目的了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。

二、实验内容说明74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。

其引脚图如下:74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

其引脚图如下:本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。

具体实验内容如下:(1)当开关Yi为低电平时对应的发光二极管点亮,Yi 为高电平时对应的发光二极管灭。

(2)当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。

(3)当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。

(4)自主设计控制及显示模式,完成编程调试,演示实验结果。

编程方法见IO(样例程序).txt.(在编译环境下程序名后缀为.asm且不能含有汉字)考核方式:完成实验内容(1)(2)(3)通过。

完成实验内容(4)优秀三、实验原理图图3-2-1 74LS244与74LS273扩展I/O口原理图实验连线图:图3-2-2 扩展I/O口连线图四、实验步骤(1)实验连线:➢244的CS——ISA总线接口模块的0000H,Y7—Y0——开关K1—K8。

➢273的CS——ISA总线接口模块的0020H,Q7—Q0——发光二极管L1—L8。

➢该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。

➢该模块的数据(AD0~AD7)连到ISA总线接口模块的数据(LD0~LD7)。

(2)编写实验程序,编译链接,运行程序(3)拨动开关,观察发光二极管的变化。

五、实验程序1、笨方法实现(主要代码):START: MOV AX,MY_DATAMOV DS,AXMOV AX,MY_STACKMOV SS,AXLOP: MOV DX,0DF00HIN AL,DXCMP AL,00HJE C0CMP AL,0FFHJE C3;JE EXITMOV DX,0DF20HOUT DX,ALJMP LOPC0: MOV AL,0FEHJMP C1C3: MOV AL,07FHJMP C2C1: ;ROL AL,1;MOV DX,0DF20H;OUT DX,AL;CALL DELAY;CALL BREAK;JE C1;JE EXIT;JMP C1;MOV AL,0FCH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FDH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FBH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0EFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0DFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0BFH MOV DX,0DF20H OUT DX,AL CALL DELAYCALL BREAKMOV AL,07FH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKCALL DELAY CALL BREAKJMP LOP;CALL DELAY;CALL BREAKIN AL,DXCMP AL,080HJMP EXITC2:MOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0BFHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0DFHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0EFHMOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0F7H MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FBH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FDH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FEHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0FFHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKCALL DELAYCALL BREAKJMP LOPIN AL,DXCMP AL,080HJMP EXIT EXIT: MOV AH,4CHINT 21H2、循环左移右移实现:主要代码:(1)右移:LOP: MOV DX,0DF00HIN AL,DXCMP AL,0FFHJE C0;JE EXITMOV DX,0DF20HOUT DX,ALJMP LOPC0: MOV AL,07FHJMP C1C1: ROR AL,1MOV DX,0DF20HOUT DX,ALCALL DELAYcall break;CMP AL,0FEH;JE EXITJMP C1IN AL,DXCMP AL,080HJMP EXIT(2)循环左移:LOP: MOV DX,0DF00HIN AL,DXCMP AL,00HJE C0;JE EXITMOV DX,0DF20HOUT DX,ALJMP LOPC0: MOV AL,0FEHJMP C1C1: ROl AL,1MOV DX,0DF20HOUT DX,ALCALL DELAYcall break;CMP AL,0FEH;JE EXITJMP C1IN AL,DXCMP AL,080HJMP EXIT实验四可编程并行接口8255实验一、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。

相关主题