1、A100 ;给各内存单元赋值Mov di,0300 Mov dx,0a Mov cx,5 1oop1:movdi,dxInc diInc dx1oop loop1程序清单如下: 寻址方式和AX的内容 MOV BX,0300 立即寻址 MOV SI, 0002 立即寻址MOV AX,BX 寄存器寻址 AX: 0300 MOV AX,0304H 立即寻址 AX:0304MOV AX,0304H 存储器直接寻址 AX:ds:0304 内存单元的内容0EHMOV AX,BX 寄存器间接寻址 AX:0300 内存单元的内容0AHMOV AX,0001BX 基址相对寻址 AX:0301 内存单元的内容0B
2、HMOV AX,BXSI 基址变址寻址 AX:0302 内存单元的内容0CHMOV AX,0001BXSI 基址变址寻址 AX:0303内存单元的内容0DH实验内容4设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。写出实现上实验报告要求:1述功能的程序段;2单步执行程序,记录每条指令的机器码及相关寄存器的内容注意:左移指令用SHL,而不能使用SAL A100Mov ax,2 机器码:b80200 ax:0002 dx:0000 cl:00Mov dx,0 机器码:ba0000 ax:Shl ax,1 机器码:d1e0 ax:0004 dx:Mov dx,ax 机器码: 0
3、1d0 ax:0004 cl:00 Mov cl,2 机器码:b102 ax:02Shl ax,cl 机器码:d3e0 ax:0010 dx:02 Add ax,dx 机器码:01d0 ax:0014 dx:Int 20 机器码:cd20 ax:实验二 简单程序的编写及汇编连接1熟练掌握编写汇编语言源程序的基本方法和基本框架。2学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。3掌握程序中数据的产生与数输出的方法。4熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。1实验前准备1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。2写出算法或画出流
4、程图。3写出源程序。4对程序中的结果进行分析,并准备好上机调试的过程。3汇编过程中出现问题,可用DEBUG进行调试。1实验内容1 编辑源程序(参考程序见下),建立 .ASM文件; 用MASM程序汇编,生成 .OBJ文件;查看 .LST文件的内容 用LINK程序链接,生成 .EXE文件;4使用DEBUG命令将 .EXE文件调进内存,执行后查看程序运行结果; 使用DEBUG命令,检查各段在内存当中分配情况。参考程序:; exercize21data segment org 0200h buffer dw 0, 1, -5, 10, 256, -128, -100, 45, 6, 3, dw -15
5、,-67, 39, 4, 20, -1668, -32766, 32765, -525,dw 300 count equ ($-buffer)/2 max dw ?data endsstack segment stack stack db 100 dup (s)stack endscode segment para code assume cs:code, ds:data, ss:stacksta proc far push ds xor ax, ax push ax mov ax, data mov ds, ax lea si, buffer mov cx, count dec cx mov
6、 ax, sichkmax: add si, 2 cmp si, ax jle nextnext: loop chkmax mov max, ax retsta endpcode ends end sta1把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名字 ,以默认配置生成obj文件,再打开链接程序输入待链接的程序名字以默认配置生成exe文件2执行前后buff数据数据块不变 max执行前数据为0000H执行后为7ffdH3顺利实验2: display “09” 100 times stac segment stack stac endscod segment par
7、a cod, ss:stac mov cx, 100 mov bl, 0 goon: push cx mov ah, 2 mov dl, 0dh int 21hMov ah ,2Mov dl,0ahInt 21h mov al, bl inc al daa and al, 0fh mov bl, al or al, 30h mov dl, al mov dx, 5 l1: mov cx, 0ffffh again: loop again dec dx jnz l1 pop cx loop goon retcod ends作业:编程并且在计算机上调试。用汇编语言编写一个加法程序:1234+567
8、8请用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示输出。假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断每个数是否大于0,等于0,还是小于0,并输出判断结果。即: 1 当x y = 0 当x=0 -1 当xsstack segment dw 32 dup(?sstack endsdata segment data1 db 1234 data2 db 5678 data3 db 4 dup(?data endscode segment assume cs:code,ss:sstack,ds:datasta:push ds xor ax
9、,ax push ax mov ax,data mov ds,ax lea si,data1 lea di,data2 lea bx,data3 mov al,si+3 mov ah,di+3 and al,0fh and ah,0fh add al,ah or al,30h mov bx+3,al mov al,si+2 mov ah,di+2 adc al,ah mov bx+2,al mov al,si+1 mov ah,di+1 mov bx+1,al mov al,si mov ah,di mov bx,al mov cx,4 mov ah,2ha1:mov dl,bx inc bx
10、 loop a1code ends end stasstack segment stack buff db 12,-23,5,-4,0,3,100,-51,3,-45,9,2 count equ $-buff assume ss:data,cs:codestart prog far xor ax,ax lea bx,buff lea si,count mov cx,siloop1:mov al,bx cmp al,0 jz aa1 and al,80h jz aa2 mov ah,2 mov dl,2dh aa: loop loop1 jmp ov aa1:mov ah,2 mov dl,30
11、h int 21h jmp aa aa2: mov dl,31h ov:retstart endp end start实验三 8254定时/计数器应用实验1、掌握8254的工作方式及应用编程;2、掌握8254典型应用电路的接法。二、实验设备 PC机一台,TD-PIE实验装置一套,示波器一台。 1、计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动KK1 +5次后,产生一次计数中断,并在屏幕上显示一个字符M。 2、定时应用实验。编写程序,应用8254的定时功能,产生一个1 ms的方波。1、计数应用实验编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用
12、单次脉冲KK 1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符M。实验步骤:(1) 实验接线如图4-2所示;(2) 编写实验程序,经编译、链接无误后装入系统;(3) 运行程序,按动KK1+产生单次脉冲,观察实验现象;(4) 改变计数值,验证8254的计数功能。图4.2 8254计数应用实验接线图实验程序清单:A8254 EQU 06C0H ;8254计数器0的端口地址B8254 EQU 06C2H ;8254计数器1的端口地址C8254 EQU 06C4H ;8254计数器2的端口地址CON8254 EQU 06C6H ;8254控制字寄存器的端
13、口地址SSTACK SEGMENT STACKDW 32 DUP(?SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART : PUSH DSMOV AX, 0000HMOV DS,AXLea ax,irq7mov si,3chmov si,axmov ax,seg irq7mov si+2,axCLIPOP DS初始化主片8259,其端口地址为20H和21HMOV AL,11HOUT 20H,AL ;ICW1MOV AL,08HOUT 21H,AL ;ICW2MOV AL,04HICW3MOV 21H,01HOUT 21H,AL ;ICW4
14、MOV AL,6FH ;OCW1OUT 21H,AL;初始化8254MOV DX,CON8254MOV AL,_ ;计数器0,方式0OUT DX,ALMOV DX,A8254给计数器0送初值STIAA1: JMP AA1中断服务程序IRQ7: MOV AX,014DHINT 10H ;显示字符MMOV AX,0120HINT 10HMOV AL,_OUT _,AL ;中断结束命令IRETCODE ENDS END SEGMENT2、定时应用实验 编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟,OUT0输出波形为1 ms方波。(1)接线图如图4-3所示;(2)根据实
15、验内容,编写实验程序,经编译、链接无误后装入系统;(3)运行实验程序,用示波器测试OUT0输出,验证程序功能。图4.3 8254定时应用实验接线图实验程序清单A8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HASSUME CS:CODESTART:MOV DX,CON8254 MOV AL,_ ;8254控制字,计数器0,方式3 OUT DX,AL MOV DX,A8254MOV AL,_ END START六、思考题1、在将计数初值赋给8254后,马上就可以启动并进行定时或计数吗?2、若CLK0输入1.925MHz的时
16、钟,能否在OUT0实现输出30ms的定时脉冲?实验四 8255并行接口实验 1、学习并掌握8255的工作方式及其应用; 2、掌握8255典型应用电路的接法。 PC机一台,TD-PITE实验装置一套。1、基本输入输出实验。本实验系统中,8255的端口地址分别为0640H,0642H,0644H以及0646H。编写程序,使8255的A口为输入,接拨动开关,B口为输出,接发光二极管;要求只要开关拨动,发光二极管的显示就发生相应改变。2、流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7D0由左向右,每次仅亮一个灯,循环显示,D15D8与D7D0正相反,由右向左,每次仅点亮一个灯,循
17、环显示。四、实验原理图5.1 8255内部结构及外部引脚图 并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A, B, C三个并行接口,用+5 V单电源供电,能在以下三种方式下工作:方式0基本输入/输出方式、方式1选通输入/输出方式、方式2双向选通工作方式。8255的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图5-2所示。五、实验步骤1、基本输入输出实验 本实验使8255端口A工作在
18、方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述: 图5.2 8255控制字格式 (1) 实验接线图如图5-3所示,按图连接实验线路图; (2) 编写实验程序,经编译、连接无误后装入系统;图5-3 8255基本输入输出实验接线图 (3) 运行程序,改变拨动开关,同时观察LED显示,验证程序功能。 DW 32 DUP (?SSTACK ENDS ASSUME CS: MOV DX,0646HMOV AL,_ ;8255的工作方式控制字 MOV DX,0640HIN AL
19、,DXCALL DELAYMOV DX,0642HJMP AA1延时子程序DELAY: PUSH CXMOV CX,0F00HAA2: PUSH AXPOP AXLOOP AA2POP CXRET END START 2、流水灯显示实验 使8255的A口和B口均为输出,数据灯D7 DO由左向右,每次仅亮一个灯,循环显示,D15D8与D7D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图5-5所示。实验步骤如下所述: (1) 按图5-5连接实验线路图; (2) 编写实验程序,经编译、链接无误后装入系统; (3) 运行程序,观察LED灯的显示,验证程序功能;图5-5 8255流水灯实验接线图 (4) 自己改变流水灯的方式,编写程序。Start:mov dx.0646hMov al,80hOut dx,alMov bx,0180hAa1:mov dx,0640hMov al,blCall delayMov dx,0642hMov al,bhRor bl,1Rol,bh,1Jmp aa1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1