当前位置:文档之家› 西电微机原理实验报告

西电微机原理实验报告

西电微机原理实验报告
西电微机原理实验报告

实验一8259中断实验

一、实验目的

1.掌握PC机中断处理系统的基本原理。

2.掌握外部扩展中断源的设计方法。

3.学会编写中断服务程序。

二、实验原理

PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。

三、实验内容

实验要求实现8259控制器的IR1、IR3两路中断都可以通过IRQ向PC机发起中断请求,用SP1、SP2单次脉冲模拟两个中断源。IR1中断时,在它的中断服务程序中编程显示“IR1 OK AND EXIT!”;IR3中断时,在它的中断服务程序中编程显示“IR3 OK AND EXIT!”。

采用查询方式完成。

图1-1 扩展中断电路

五、实验程序

;*********************;

;* 实验台上8259中断*;

;*********************;

data segment

ioport equ 0ff00h-0280h

MY8259_ICW1 EQU ioport +280H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU ioport +281H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU ioport +281H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU ioport +281H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU ioport +281H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU ioport +280H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU ioport +280H ;实验系统中8259的OCW3端口地址

io8255a equ ioport+288h

io8255b equ ioport+289h

io8255c equ ioport+28ah

io8255 equ ioport+28bh

msg3 db 0dh,0ah,'IR1 ok and exit!',0dh,0ah,'$'

msg4 db 0dh,0ah,'IR3 ok and exit!',0dh,0ah,'$'

data ends

stacks segment

db 100 dup (?)

stacks ends

code segment

assume cs:code,ds:data,ss:stacks,es:data

start:

mov ax,data

mov ds,ax

mov es,ax

mov ax,stacks

mov ss,ax

MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1

MOV AL,13H ;边沿触发、单片8259、需要ICW4

OUT DX,AL

MOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2

MOV AL,08H

OUT DX,AL

MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4

MOV AL,01H ;非自动结束EOI

OUT DX,AL

MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1

MOV AL,0F5H ;打开IR1和IR3的屏蔽位

OUT DX,AL

QUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令MOV AL,0CH

OUT DX,AL

NOP

NOP

NOP

MOV DX,MY8259_OCW3

IN AL,DX ;读出查询字

TEST AL,80H ;判断中断是否已响应

JZ QUERY ;没有响应则继续查询

AND AL,07H

CMP AL,01H

JE IR1ISR ;若为IR1请求,跳到IR1处理程序

CMP AL,03H

JE IR3ISR ;若为IR3请求,跳到IR1处理程序

JMP EOI

IR1ISR: mov dx,offset msg3 ;IR1处理,显示字符串'IR1 ok and exit' mov ah,09h

int 21h

mov dx,io8255 ;设8255为B口输入,C口输出

mov al,93h

out dx,al

inout: mov dx,io8255b ;从B口输入一数据

in al,dx

mov dx,io8255c ;从C口输出刚才自B口

out dx,al ;所输入的数据

mov dx,io8255b

xor dx,dx

in al,dx

mov dx,io8255c ;从C口输出刚才自B口

out dx,al

mov dl,0ffh ;判断是否有按键

mov ah,06h

int 21h

jz inout ;若无,则继续自C口输入,A口输出

mov ah,4ch ;否则返回

int 21h

JMP QUERY

JMP EOI

IR3ISR:mov dx,offset msg4 ;IR1处理,显示字符串'IR3 ok and exit' mov ah,09h

int 21h

mov dx,io8255 ;设8255为C口输入,A口输出mov al,93h

out dx,al

inout1: mov dx,io8255b ;从C口输入一数据

in al,dx

mov dx,io8255c ;从A口输出刚才自C口

out dx,al ;所输入的数据

mov dx,io8255b

xor dx,dx

in al,dx

mov dx,io8255c ;从C口输出刚才自B口

out dx,al

mov dl,0ffh ;判断是否有按键

mov ah,06h

int 21h

jz inout1 ;若无,则继续自C口输入,A口输出

mov ah,4ch ;否则返回

int 21h

JMP QUERY

JMP EOI

EOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令MOV AL,20H

OUT DX,AL

code ends

end start

六、实验结果

运行程序之后,通过对IR1,IR3的按钮的交替控制,使得屏幕上显示固定的语句,表示已经试验成功。

七、实验中遇到的问题及解决方法

遇到的问题:

1、程序调整好了之后,按下中断按钮之后没有出现想要的结果,屏幕上没有出现该出现的语句。

2、程序不能打开,不能运行。

解决的方法:检查线路之后,发现有接线接错,通过对程序中的小的修改,最终成功的解决问题。

实验二 8255及综合

一、实验目的

掌握8255方式0的工作原理及使用方法。

二、实验原理

实验电路如图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

图2-1

三、实验内容

1.1)编程从8255C口输入数据,再从A口输出;

2)编程从8255A口输入数据,再从B口输出;

3)编程从8255B口输入数据,再从A口输出。

2.将8255与8259结合起来。当程序响应IR1中断时候,发光二极管的高四位灭(或亮),同时屏幕显示“IR1 ok and exit”,当程序响应IR3中断时候,发光二极管的低四位灭(或亮),同时屏幕显示“IR13ok an d exit”。

四、实验流程图

五、实验程序

1、

1)C口入,A口出

ioport equ 0C400H-0280h

io8255a equ ioport+288h

io8255b equ ioport+28bh

io8255c equ ioport+28ah

code segment

assume cs:code

start: mov dx,io8255b ;设8255为C口输入,A口输出

mov al,89h

out dx,al

inout: mov dx,io8255c ;从C口输入一数据

in al,dx

mov dx,io8255a ;从A口输出刚才自C口

out dx,al ;所输入的数据

mov dl,0ffh ;判断是否有按键

mov ah,06h

int 21h

jz inout ;若无,则继续自C口输入,A口输出mov ah,4ch ;否则返回DOS

int 21h

code ends

end start

2)A口入,B口出

ioport equ 0C400H-0280h

io8255a equ ioport+288h

io8255b equ ioport+28bh

io8255c equ ioport+28ah

code segment

assume cs:code

start: mov dx,io8255b ;设8255为C口输入,A口输出mov al,99h

out dx,al

inout: mov dx,io8255a ;从C口输入一数据

in al,dx

mov dx,io8255b ;从A口输出刚才自C口

out dx,al ;所输入的数据

mov dl,0ffh ;判断是否有按键

mov ah,06h

int 21h

jz inout ;若无,则继续自C口输入,A口输出mov ah,4ch ;否则返回DOS

int 21h

code ends

end start

3)B入,C出

ioport equ 0C400H-0280h

io8255a equ ioport+288h

io8255b equ ioport+28bh

io8255c equ ioport+28ah

code segment

assume cs:code

start: mov dx,io8255b ;设8255为C口输入,A口输出mov al,82h

out dx,al

inout: mov dx,io8255b ;从C口输入一数据

in al,dx

mov dx,io8255c ;从A口输出刚才自C口

out dx,al ;所输入的数据

mov dl,0ffh ;判断是否有按键

mov ah,06h

int 21h

jz inout ;若无,则继续自C口输入,A口输出

mov ah,4ch ;否则返回DOS

int 21h

code ends

end start

2、8255与8259的结合程序

;*********************;

;* 实验台上8259中断*;

;*********************;

data segment

ioport equ 0ff00h-0280h

io8255a equ ioport+288h ;A口口地址

io8255b equ ioport+289h ;B口

io8255c equ ioport+28ah ;C口

io8255 equ ioport+28bh ;控制寄存器口地址

MY8259_ICW1 EQU ioport +280H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU ioport +281H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU ioport +281H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU ioport +281H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU ioport +281H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU ioport +280H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU ioport +280H ;实验系统中8259的OCW3端口地址csreg dw ?

ipreg dw ? ;旧中断向量保存空间

irq_times dw 00h ;中断计数

msg1 db 0dh,0ah,'DVCC pci card Interrupt',0dh,0ah,'$'

msg2 db 0dh,0ah,'Press any key to exit!',0dh,0ah,'$'

msg3 db 0dh,0ah,'IR1 ok and exit!',0dh,0ah,'$'

msg4 db 0dh,0ah,'IR3 ok and exit!',0dh,0ah,'$'

data ends

stacks segment

db 100 dup (?)

stacks ends

code segment

assume cs:code,ds:data,ss:stacks,es:data

start:

mov ax,data

mov ds,ax

mov es,ax

mov ax,stacks

mov ss,ax

mov dx,io8255 ;设8255为A口输入,C口输出mov al,80h

out dx,al

mov dx,io8255c

mov al,00h ;从C口输出刚才自A口

out dx,al

MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1

MOV AL,13H ;边沿触发、单片8259、需要ICW4

OUT DX,AL

MOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2

MOV AL,08H

OUT DX,AL

MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4

MOV AL,01H ;非自动结束EOI

OUT DX,AL

MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1

MOV AL,0F5H ;打开IR1和IR3的屏蔽位

OUT DX,AL

QUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令MOV AL,0CH

OUT DX,AL

NOP

NOP

NOP

MOV DX,MY8259_OCW3

IN AL,DX ;读出查询字

TEST AL,80H ;判断中断是否已响应

JZ QUERY ;没有响应则继续查询

AND AL,07H

CMP AL,01H

JE IR1ISR ;若为IR1请求,跳到IR1处理程序

CMP AL,03H

JE IR3ISR ;若为IR3请求,跳到IR3处理程序

JMP EOI

IR1ISR: mov dx,offset msg3 ;IR1处理,显示字符串'IR1 ok and exit' mov ah,09h

int 21h

mov dx,io8255c ;从C口输出刚才自A口

mov al,0f0h

out dx,al

JMP EOI

IR3ISR: mov dx,offset msg4 ;IR3处理,显示字符串'IR3 ok and exit' mov ah,09h

int 21h

mov dx,io8255c

mov al,0fh ;从C口输出刚才自A口

out dx,al

JMP EOI

EOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令MOV AL,20H

OUT DX,AL

JMP QUERY

code ends

end start

六、实验结果

1、正确接线之后,通过设置初始值进行初始化,最后能实现用开关来控制小灯的亮灭,不同的初始参数和接线方法能够出现不同的结果。

2、8255与8259的结合程序

程序运行完成之后,小灯能够在中断的控制下四个一组交替亮灭,通过按下IR1,IR3按钮来进行控制。

七、实验中遇到的问题及解决方法

遇到的问题:

1、程序调整好了之后,有若干的小灯不能被开关控制,只有一部分小灯能够被控制。

2、程序不能打开,不能运行。

解决的方法:检查线路之后,发现有接线接错,通过纠正和对程序中的小的修改(对入口参数的修改),最终成功的解决问题。

实验三8253

一、实验目的

掌握8253的基本工作原理和编程方法。

二、实验原理及内容

1.图3-1是本实验程序的接线图,将计数器0设置为方式0,计数器初值为N(N≤0FH,本程序中为0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用L0或逻辑笔观察OUT0电平变化,初始时OUT0为高电平,当输入N个脉冲时,OUT0变为低电平,当输入N+1个脉冲后OUT0变高电平)。

2.按图3-2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用电平指示灯L0或逻辑笔观察OUT1输出电平的变化,要求输出频率1HZ的分频信号。

图3-1

三、参考流程图

实验内容一的框图如图3-32的框图如图3-4所示。

图3-3 图3-4

四、参考程序

1、

;*************************; ;* 8253方式0计数器实验 *; ;*************************;

ioport equ 0ff00h-0280h io8253k equ ioport+283h io8253a equ ioport+280h code segment assume cs:code start:

mov al,00010000B ;设置8253通道0为工作方式2,二进制计数 mov dx,io8253k

out dx,al

mov dx,io8253a ;送计数初值为08H

mov al,08h

out dx,al

lll: in al,dx ;读计数初值

call disp ;调显示子程序

push dx

mov ah,06h

mov dl,0ffh

int 21h

pop dx

jz lll

mov ah,4ch ;退出

int 21h

disp proc near ;显示子程序

push dx

and al,0fh ;首先取低四位

mov dl,al

cmp dl,9 ;判断是否<=9

jle num ;若是则为'0'-'9',ASCII码加30H

add dl,7 ;否则为'A'-'F',ASCII码加37H num: add dl,30h

mov ah,02h ;显示

int 21h

mov dl,0dh ;加回车符

int 21h

mov dl,0ah ;加换行符

int 21h

pop dx

ret ;子程序返回

disp endp

code ends

end start

2、

;*******************

;* 8253分频*

;*******************

ioport equ 0ff00h-0280h

io8253a equ ioport+280h

io8253b equ ioport+281h

io8253k equ ioport+283h

code segment

assume cs:code

start:mov dx,io8253k ;向8253写控制字

mov al,36h ;使0通道为工作方式3

out dx,al

mov ax,1000 ;写入循环计数初值1000

mov dx,io8253a

out dx,al ;先写入低字节

mov al,ah

out dx,al ;后写入高字节

mov dx,io8253k

mov al,76h ;设8253通道1工作方式2

out dx,al

mov ax,1000 ;写入循环计数初值1000

mov dx,io8253b

out dx,al ;先写低字节

mov al,ah

out dx,al ;后写高字节

mov ah,4ch ;程序退出

int 21h

code ends

end start

五、实验结果

实验一:设置好初始值N之后,按下控制按钮N+1次之后,发现小灯由暗变亮。

实验二:设置好初始值,运行程序之后,小灯按照事先设置好的频率闪烁

六、实验中遇到的问题及解决方法

实验中的问题:实验一中,运行程序之后,按下控制按钮之后没有出现由暗变亮的结果,在设置不同的初始值之后,有一些能够成功的出现结果,另有一些不能出现结果;实验二中,没有出现闪烁的情况。

解决办法:对实验一中的程序进行了小的修改,但是最终还是有这样的问题,最后老实说怀疑是病毒导致的结果,没有搞得很清楚。实验二中对设置的频率进行了调整,最后实现了实验的现象

杭电计组实验报告10

计组实验十 老师:包健 一、源代码测试模块代码: module Top( inputinclk, inputmem_clk, inputrst, outputreg[7:0] LED, input [3:0] SW ); wireclk; MyButtonmb( .clk_100MHz(mem_clk), .BTN(inclk), .BTN_Out(clk) ); wire [31:0] ALU_F; wire [31:0] M_R_Data; wire ZF; wire OF; wire [31:0]PC; My_I_CPUmy_i_cpu( .clk(clk), .mem_clk(mem_clk), .rst(rst), .ALU_F(ALU_F), .M_R_Data(M_R_Data), .ZFF(ZF), .OF(OF), .PC_out(PC) ); always@(*) begin case(SW) 4'd0:LED=ALU_F[7:0]; 4'd1:LED=ALU_F[15:8]; 4'd2:LED=ALU_F[23:16]; 4'd3:LED=ALU_F[31:24]; 4'd4:LED=M_R_Data[7:0];

4'd5:LED=M_R_Data[15:8]; 4'd6:LED=M_R_Data[23:16]; 4'd7:LED=M_R_Data[31:24]; 4'd8:LED={ZF,6'd0,OF}; 4'd12:LED=PC[7:0]; 4'd13:LED=PC[15:8]; 4'd14:LED=PC[23:16]; 4'd15:LED=PC[31:24]; default:LED=8'b0000_0000; endcase end endmodule 顶层模块代码: moduleMy_I_CPU( inputclk, inputmem_clk, inputrst, output [31:0] ALU_F, output [31:0] M_R_Data, output ZFF, output OF, output [31:0]PC_out ); //wire clk_n = ~clk; wire[31:0] codes; wire [31:0]PC_new; reg [31:0]PC; Inst_Fetch1 inst_fetch( .PC(PC), .rst(rst), .clk(clk), .Inst_codes(codes), .PC_new(PC_new) ); wire[5:0] OP; wire[5:0] func;

西电微机原理大作业

科目:微机原理与系统设计授课老师:李明、何学辉 学院:电子工程学院 专业:电子信息工程 学生姓名: 学号:

微机原理硬件设计综合作业 基于8086最小方式系统总线完成电路设计及编程: 1、扩展16K字节的ROM存储器,起始地址为:0x10000; Intel 2764的存储容量为8KB,因此用两片Intel 2764构成连续的RAM存储区域的总容量为2 8KB=16KB=04000H,鉴于起始地址为10000H,故最高地址为 10000H+04000H-1=13FFFH 电路如图

2、扩展16K 字节的RAM 存储器,起始地址为:0xF0000; Intel 6264的存储容量为8KB ,因此用两片Intel 6264构成连续的RAM 存储区域的总容量为2 8KB=16KB=04000H ,鉴于起始地址为F0000H ,故最高地址为 F0000H+04000H-1=F3FFFH 片内地址总线有13根,接地址总线的131~A A ,0A 和BHE 用于区分奇偶片,用74LS155作译码电路,如图所示 3、设计一片8259中断控制器,端口地址分别为:0x300,0x302; 鉴于端口地址分别是300H 和302H ,可将82590A 接到80861A ,其他作译码。电路如图:

4、设计一片8253定时控制器,端口地址分别为:0x320,0x322,x324,0x326; 根据端口地址可知,825301,A A 应该分别接到8086的12,A A ,其余参与译码。电路如图:

5、设计一片8255并行接口,端口地址分别为:0x221,0x223,x225,0x227; 由于端口地址为奇地址,8086数据总线应该接158~D D ,且BHE 参与译码。根据端口地址可得825501,A A 应该分别接到8086的12,A A ,其余参与译码。电路如图:

计组实验报告

计算机组成原理实验报告 实验1:VERILOG 设计基础 专业班级:14级计算机二班 学号:14048001 姓名:杨娜 学号:14048003 姓名:周蓉 实验地点:理工楼901 实验时间:2016年5月14日

实验十VGA显示控制器的设计 一、实验目的 1、学习VERILOG的基本语法和编程规则 2、掌握通用寄存器等常用基本数字模块的VERILOG描述和基本设计方法 3、理解带使能控制和异步清零的8位寄存器的设计原理 4、掌握使用VERILOG设计和验证带使能控制和异步清零的8位寄存器的方法 5、掌握移位寄存器的设计方法 二、实验任务 1、设计一个带使能控制和异步清零的8位寄存器REG8X,实现8位输入的锁存,在时钟的上升沿处得到一个8位的输出和一个8位的反向输出,将结果显示在发光二极管。 模块的端口描述如下: 模块的参考物理结构如下: R7 R6 R i R 0 7 6 i 0 带使能控制和异步清零的8位寄存器 模块的使用注意事项

1.数据源D(7..0)一直加在寄存器的数据输入端; 2.周期性的时钟信号Clock一直加在寄存器的时钟输入端 3.使能信号Enable控制寄存器是否接受数据。当Enable = '0'时,寄存器不 接受数据,保持原来的状态不变;当Enable = '1'时,在时钟信号Clock正 跳变时,寄存器接受并保存当时D(7..0)的数据; 4.本寄存器其它方面的功能与上述的寄存器相同。 完成的参考电路图如下:dout=q 2、设计一个有左、右移位功能的8位寄存器REGSHIFT8,并仿真验证。

三、实验内容 1、通过输入数据先进行计算,并通过实验进行验证REG8X。 (1)、将清零信号Resetn(sw17)设为0,将输入信号D(sw7~sw0)设为10101010,观察输出信号Q(ledr7~ledr0)和Qb(ledg7~ledg0),观察并记录输出。 (2)、将清零信号Resetn(sw17)设为1,在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (3)、将输入信号D(sw7~sw0)设为01010101,观察并记录输出。 (4)、在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (5)、自行完善设计表格,观察并记录测试输出。 实验数据表 2、通过输入数据先进行计算,并通过实验进行验证REGSHIFT8。 (1)、测试清零信号Resetn (2)、测试移位功能 (3)、测试寄存功能 (4)、自行设计表格观察并记录测试输出。 实验数据表

西电微机原理2010试题

西安电子科技大学微机原理试题 姓名学号总分 一.填空题(每空1分,共30分) 1)15的8位二进制补码为,-15的8位二进制补码为。 2)某8位二进制补码为80H,其十进制表示为。 3)字符B的ASCII码为,字符0的ASCII码为。 4)8086CPU总线按功能可分为数据总线,总线和总线。 5)8086CPU数据总线包含条数据线,最多可寻址的存储器容量为。 6)CPU内部用于计算的部分为,用于保存下一条要执行的指令地址的 为。 A) 程序状态字B) 程序计数器C) ALU D) 工作寄存器 7)经常用作循环次数的寄存器是,用于I/O端口寻址的寄存器是。 A) AX B) BX C) CX D) DX 8)指令MOV CX, 1000的结果是CH= 。 9)将0D787H和4321H相加后,标志位CF= ,SF= ,ZF= , OF= ,AF= ,PF= 。 10)寄存器SI中能够表示的最大有符号数为,最小有符号数为。 11)设(DS)=4000H,(BX)=0100H,(DI)=0002H,(4002)=0A0AH,(40100)=1234H,(40102) =5678H,求以下指令分别执行后AX寄存器的值。 MOV AX , [2] (AX)= 。 MOV AX , [BX] (AX)= 。 MOV AX , [BX][DI] (AX)= 。 MOV AX , 1[BX] (AX)= 。 12)用一条指令将AX寄存器低四位清零,其余位不变:。 13)用一条指令将AX寄存器高四位取反,其余位不变:。 14)用一条指令将AX高8位与低8位交换:。 15)用一条指令将AL中的大写字母变成相应的小写:。 二.判断题(每题1分,共10分) 以下语句是语法正确的打√,语法错误打×,其中TABLE和TAB为两个字节类型的变量。 1)MOV DS , 1000H 2)MOV DS , TABLE 3)MOV [1200H] , [1300H] 4)ADD AX , BX , CX 5)XCHG AL , CL 6)CALL AL 7)MUL AX , BX 8)JU L1 9)SHR CL , CL

计组-加法器实验报告

半加器、全加器、串行进位加法器以及超前进位加法器 一、实验原理 1.一位半加器 A和B异或产生和Sum,与产生进位C 2.一位全加器 将一位半加器集成封装为halfadder元件,使用两个半加器构成一位的全加器 3.4位串行进位加法器 将一位全加器集成封装为Fulladder元件,使用四个构成串行进位加法器

4.超前进位加法器(4位) ⑴AddBlock 产生并行进位链中的ti(即Cthis)和di(即Cpass),以及本位结果Sum ⑵进位链(Cmaker) 四位一组并行进位链,假设与或非门的级延迟时间为1.5ty,与非门的延迟时间为1ty,在di和ti产生之后,只需2.5ty就可产生所有全部进位

⑶超前进位加法器 将以上二者结合起来即可完成,A和B各位作为各个AddBlock的输入,低一位的进位Ci-1作为本位AddBlock的C-1的输入。各个AddBlock输出的C_this和C_pass作为对应的Cmaker的thisi和passi的输入。

二、实验器材 QuartusII仿真软件,实验箱 三、实验结果 1.串行进位加法器结果 2.超前进位加法器结果

四、实验结果分析 1.实验仿真结果显示串行加法器比超前进位加法器快,部分原因应该是电路结构优化 不到位。另外由于计算的位数比较少,超前进位加法链结构较复杂,所以优势没体现出来,反倒运作的更慢一点。当位数增加的时候,超前进位加法器会比串行的更快。 2.波形稳定之前出现上下波动,应该与“竞争冒险”出现的情况类似,门的延迟和路径 的不同导致了信号变化时到达的时间有先有后,因此在最终结果形成前出现了脉冲尖峰和低谷;另外也可能部分原因由于电路结构优化的不到位所致

西电微机原理上机作业第三

微机上机作业三 容: 编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为: (1)按下“1”键,完成字符串小写字母变成大写字母。 (2)按下“2”键,完成找最大值(二选一)。 (3)按下“3”键,完成排序(二选一)。 (4)按下“4”键,显示时间。 (5)按下“5”键,结束程序运行,返回系统提示符。 汇编程序: STACK SEGMENT STACK DB 256 DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT TABLE DW G1, G2, G3, G4, G5 STRING0 DB' Form the school ID is 02111460 Li Cheng',0DH,0AH,'$' STRING1 DB '1. Change small letters into capital letters of string;', 0DH, 0AH, '$' STRING2 DB '2. Find the maximum of string;', 0DH, 0AH, '$' STRING3 DB '3. Sort for datas;', 0DH, 0AH, '$' STRING4 DB '4. Show Time;', 0DH, 0AH, '$' STRING5 DB '5. Exit.', 0DH, 0AH, '$' STRINGN DB 'Input the number you select (1-5) : $' IN_STR DB 'Input the string (including letters & numbers, less than 60 letters) :', 0DH, 0AH, '$' PRESTR DB 'Original string : $' NEWSTR DB 'New string : $' OUT_STR DB 'The string is $' MAXCHR DB 'The maximum is $' IN_NUM DB 'Input the numbers (0 - 255, no more than 20 numbers) : ', 0DH, 0AH, '$' OUT_NUM DB 'Sorted numbers : ', 0DH, 0AH, '$' IN_TIM DB 'Correct the time (HH:MM:SS) : $' HINTSTR DB 'Press ESC, go back to the menu; or press any key to play again!$' KEYBUF DB 61 DB ? DB 61 DUP (?) NUMBUF DB ? DB 20 DUP (?) DATA ENDS

西电微机原理实验报告

微机系统实验报告 班级:031214 学号:03121370 姓名:孔玲玲 地点:E-II-312 时间:第二批

实验一汇编语言编程实验 一、实验目的 (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功能调用 AH 值功能调用参数结果 1 键盘输入并回显AL=输出字符 2 显示单个字符(带Ctrl+Break检查) DL=输出字符光标在字符后面 6 显示单个字符(无Ctrl+Break检查) DL=输出字符光标在字符后面 8 从键盘上读一个字符AL=字符的ASCII码 9 显示字符串DS:DX=串地址,‘$’为结束字符光标跟在串后面 4CH 返回DOS系统AL=返回码

四、实验步骤 (1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。 (2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。 (3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行。 (4)更改数据区的数据,考察程序的正确性。 五、实验程序 DATA SEGMENT BUFFER DB '03121370konglingling:',0AH,0DH,'$' BUFFER2 DB 'aAbBcC','$' BUFFER3 DB 0AH,0DH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START: MOV AX,DA TA MOV DS,AX mov ah,09h mov DX,OFFSET BUFFER int 21h

计组课设实验报告

《计算机组成原理与系统结构》课程设计 实 验 报 告 课题:两个16位二进制数加法计算 班级: 成员: 完成日期:2013年10月11日

一:课程设计步骤 1.确定设计目标 综合考虑实验条件及自身能力水平,以及设计功能的可靠性和实用性,我们小组决定将设计目标定为“两个16位二进制数相加”。分两次分别输入两个加数的低八位和高八位,输出两个16位二进制数相加的结果。 2.确定指令系统 (1)数据格式 模型机规定数据采用定点整数补码表示,字长为8位,其格式如下: 7 6 5 4 3 2 1 0 符号尾数 (2)指令格式 模型机设计四大类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。 ①算术逻辑指令 设计九条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下: 7 6 5 4 3 2 1 0 OP-CODE RS RD 其中,OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,并规定: RS或RD 选定的寄存器 00 01 10 R0 R1 R2 ②I/O指令 输入(1N)和输入(OUT)指令采用单字节指令,其格式如下: 7 6 5 4 3 2 1 0 OP-CODE addr RD 其中,addr=01时,选中“INPUT DEVICE”中的开关组作为输入设备,addr=10时,选中“INPUT DEVICE”中的数码块作为输入设备。 ③访问指令及转移指令 模型机设计两条访问指令,即存数(STA)、取数(LDA),两条颛臾指令,即无条件转移(JMP)、结果为零或有进位转移(BZC),指令格式如下: 7 6 5 4 3 2 1 0 00 M OP-CODE RD D 其中,OP-CODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。D为位移量(正负均可),M为寻址模式,其定义如下: 寻址模式有效地址E 说明 00 E=D 直接寻址

西电微机原理上机

4.37 (上机题)编写程序实现,将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺 序显示: 数据1 <原序号> 数据2 <原序号> …… 算法流程图: 调试问题、心得体会: 通过这道题,熟悉了流程图画法,掌握了产生随机数,“冒泡法”排序,子函数编写调用等的基本过程,尤其对于中断调用,并利用ASCII码回显和对课本字节型数据“冒泡法”排序改进为字形排序的过程,是我受益匪浅。并且亲身实践了源程序的汇编、调试也连接。 问题:将字节型冒泡法直接应用于该题,导致出错,该题存储的是字型数据!

原因在于只是排列的AL中的数值,并不是产生的随机数! 同时对于字型与字节型在运算类指令中的应用还是有误,以及其他的一些小错误,应加以改善! 运行结果: 程序代码: STACK SEGMENT STACK 'STACK' DW 100H DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT BUFFER LABEL WORD

X=17 REPT 100 X=(X+80)mod 43 DW X ENDM BUF DW 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP MOV CX,100 LEA SI,BUFFER LEA DI,BUF L1: MOV AX,[SI] INC SI INC SI MOV [DI],AX INC DI INC DI LOOP L1 MOV CX,100 DEC CX LEA SI,BUFFER PUSH CX ADD CX,CX ADD SI,CX POP CX L2: PUSH CX PUSH SI L3: MOV AX,[SI] CMP AX,[SI-2] JAE NOXCHG XCHG AX,[SI-2] MOV [SI],AX NOXCHG:

计组实验报告.

武汉大学计算机学院计算机科学与技术专业 CPU设计实验报告 实验名称:开放式实验CPU设计课题名称: 计算机组成原理 班级: 指导教师:徐爱萍 组长: 组员: 二零一五年三月

目录 目录 (1) 1 实验环境 (2) 1.1 Quartus Ⅱ介绍 (2) 1.2 硬件描述语言(VHDL) (3) 1.3实验的主要成果 (3) 2 实验要求 (5) 2. 1 指令格式要求 (5) 2. 2 指令流程及微信号序列分析 (6) 2.2.1 ADD指令分析 (6) 2.2.2 ADC指令分析 (7) 2.2.3 SUB指令分析 (7) 2.2.4 SBC指令分析 (7) 2.2.5 INC指令分析 (7) 2.2.6 DEC指令分析 (8) 2.2.7 SHL指令分析 (8) 2.2.8 SHR指令分析 (8) 2.2.9 MOVR指令分析 (8) 2.2.10 MOVD指令分析 (9) 2.2.11 LDRR指令分析 (9) 2.2.12 STRR指令分析 (10) 2.2.13 JMP指令分析 (10) 2.2.14 JRC指令分析 (11) 2.2.15 JRZ指令分析 (11) 2.2.16 JRS指令分析 (11) 2.2.17 CLC指令分析 (11) 2.2.18 STC指令分析 (11) 3.部件仿真实验 (11) 3.1 八个通用寄存器设计与仿真 (11) 3.1.1 设计代码 (11) 3.1.2 RTL连接图 (17) 3.1.3 仿真过程 (17) 3.2算术逻辑单元设计与仿真 (18) 3.2.1 设计代码 (18) 3.2.2 RTL连接图 (21) 3.2.3 仿真过程 (22) 4. CPU设计 (23) 4.1取指设计 (23) 4.2指令译码的设计 (25) 4.3执行部分设计 (28) 4.4存储器部分设计 (31) 4.5通用寄存器组设计 (32)

西电机电院微机原理上机答案

汇编语言上机题 姓名:学号:成绩: 实验一、上机过程及DEBUG应用 编写程序,建立数据段DATA,将你的姓名(汉语拼音)及学号存入DATA数据段的BUFFER1区域,然后利用程序将BUFFER1区域中的字符串(姓名及学号)依次传送到从BUFFER2开始的内存区域中去。 上机过程与要求 1.建立原程序: 源程序文件名为,源程序清单如下: data segment buffer1 db 'hepan04105038' buffer2 db 13 dup() data ends code segment ASSUME CS:CODE,DS:DATA START: mov ax,data mov ds,ax mov es,ax lea si,buffer1 lea di,buffer2 mov cx,0d cld rep movsb mov ah,4ch int 21h code ends end start 2.汇编后生成的obj文件名为buffer .OBJ 3.连接后生成的目标文件名为buffer .EXE 4.DEBUG调试:在DEBUG下,利用U、D、G、R等命令对EXE文件进行调试后,相关信息如下: (1)表1-1 反汇编清单中所反映的相关信息 *注:最后一条指令是对应于代码段中最后一条指令 (2)在未执行程序之前,用D命令显示内存区域BUFFER1及BUFFER2中的内容, 其相关信息如表1-2所示。 表1-2 未执行程序之前的数据区内容

(3)执行程序以后用D命令显示内存区域的相关信息,如表1-3。 表1-3 执行程序之后的数据区内容 (4)用R命令检查寄存器的内容如表1-4所示。 回答问题 a)宏汇编命令MASM的作用是什么 答:产生OBJ文件。 b)连接命令LINK的作用是什么连接后生成什么文件 答:产生EXE文件,生成EXE文件。 c)DEBUG下U命令的作用是什么 答:反汇编被调试命令。 d)DEBUG下D命令的作用是什么 答:显示内存单元的内容。 e) 在DEBUG下如何执行.EXE文件,写出执行命令的常用格式。 答:DEBUG 。 实验二、寻址方式练习 掌握8086/8088的寻址方式是学习汇编语言的基础,因此,我们以数据传送指令为例编写了下面的程序,通过该程序对主要的几种寻址方式进行练习。 DATA1 SEGMENT M1 DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H M2 DB 0A6H,0A7H,0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFH DATA1 ENDS DATA2 SEGMENT N1 DB 0B0H,0B1H,0B2H,0B3H, 0B4H,0B5H N2 DB 0B6H,0B7H, 0B8H,0B9H,0BAH,0BBH, 0BCH,0BDH,0BEH,0BFH DATA2 ENDS STACK SEGMENT PARA STACK ‘STACK’ DB 0C0H,0C1H,0C2H,0C3H, 0C4H,0C5H DB 0C6H,0C7H, 0C8H,0C9H,0CAH,0CBH, 0CCH,0CDH,0CEH,0CFH

广工计组实验报告

计算机组成原理实验报告 课程名称计算机组成原理实验 学院计算机学院 专业班级 学号 学生姓名 指导教师 2015年 06 月20 日

计算机学院( 学号: 姓名教师评定 实验题目基础汇编语言程序设计实验 实验一:基础汇编语言程序设计实验 一、实验目的: (1)学习和了解TEC-XP+教学实验系统监控命令的用法; (2)学习和了解TEC-XP+教学实验系统的指令系统; (3)学习简单的TEC-XP+教学实验系统汇编语言程序。 二、实验设备与器材: TEC-XP+教学实验系统,仿真终端软件。 三、实验内容: 1、学习联机使用TEC-XP+教学实验系统和仿真终端软件PCEC; 2、学习使用WINDOWS界面的串口通讯软件; 3、使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;

4、使用A命令编写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行改程序,用T、P命令单步运行并观察程序单步执行的情况。 四、实验步骤: 一、实验具体操作步骤: 1、准备一台串口工作良好的PC机; 2、将TEC-XP放在实验台上,打开实验箱的盖子,确定电源处于断开状态; 3、将黑色电源线一端接220V交流电源,另一端插在TEC--XP试验箱电源插座上; 4、取出通讯线,将通信线的9芯插头接在试验箱的串口“COM1”或“COM2”上,另一端接到PC机的串口上; 5、将TEC-XP实验系统左下方的6个黑色控制器开关置为001100,,控制开关的功能在开关上、下方有标识;开关拨向上方表示“1”,拨向下方表示“0”,“x”表示任意,其他实验相同; 6、打开电源,船形开关和5v电源指示灯亮。 7、在PC机上运行PCEC16.EXE文件,直接回车。 8、按一下“RESET”按键,再按一下“START”按键在主机上显示: TEC—2000 CRT MONITOR Version 1.0 April 2001 Computer Architectur Lab,Tsinghua University Programmed by He Jia > 二、实验注意事项: 几种常见的工作方式(开关拨到上方表示为1,拨到下方为0)

微机原理大作业

洛阳理工学院 微 机 原 理 与 接 口 技 术 《微机原理与接口技术》作为我们机械工程专业的必修的考察课程。本课程主要讲了计算机接口相关的基本原理、微处理器系统和微型计算机系统的总线、计算机接口技术的介绍以及计算机接口技术在工程

实际当中的应用等课程内容的介绍,概括了微机原理与计算机接口技术,微型计算机系统是以微型计算机为核心。 课程主要内容 第一章:主要了叙述微型计算机的发展构成和数的表示方法 (1)超、大、中、小型计算机阶段(1946年-1980年) 采用计算机来代替人的脑力劳动,提高了工作效率,能够解决较复杂的数学计算和数据处理 (2)微型计算机阶段(1981年-1990年) 微型计算机大量普及,几乎应用于所有领域,对世界科技和经济的发展起到了重要的推动作用。 (3)计算机网络阶段(1991年至今)。 计算机的数值表示方法:二进制,八进制,十进制,十六进制。要会各个进制之间的数制转换。计算机网络为人类实现资源共享提供了有力的帮助,从而促进了信息化社会的到来,实现了遍及全球的信息资源共享。 微机系统的基本组成 1.微型计算机系统由硬件和软件两个部分组成。

2.系统总线可分为3类:数据总线DB(Data Bus),地址总线AB(Address Bus),控制总线CB(Control Bus)。 3.微机的工作过程就是程序的执行过程,即不断地从存储器中取出指令,然后执行指令的过程。 第二章8086/8088微处理器 1.8086微处理器结构: CPU内部结构:总线接口部件BIU,执行部件EU; CPU寄存器结构:通用寄存器,段寄存器,标志寄存器,指令指针寄存器; CPU引脚及其功能:公用引脚,最小模式控制信号引脚,最大模式控制信号引脚。 2、8086/8088 CPU芯片的引脚及其功能 8086/8088 CPU具有40条引脚,双列直插式封装,采用分时复用地址数据总线,从而使8086/8088 CPU用40条引脚实现20位地址、16位数据、控制信号及状态信号的传输。 3.8086微机系统存储器组织:存储器组成和分段。8086微机系统的I/O结构 4.8086最小/最大模式系统配置:8086/8088 CPU芯片可以在两种模式下工作,即最大模式和最小模式。 最大模式:指系统中通常含有两个或多个微处理器(即多微处理器系

计组实验报告--部分

2、设计报告 2、1实验方法 本实验要完成的工作主要包括: 1、指令系统的设计 2、利用VHDL语言完成实验CPU的设计,包括通用寄存器的设计、取值部分设计、指令译 码设计、执行设计、存储器设计、程序包设计和顶层设计设计 3、在Quatus II 平台上进行仿真,并下载到TEC-CA教学实验箱上进行调试。 这三大部分为并行关系,只有在完成上一部分的基础上才能继续进行下一步,而第二大部分可以同时并行进行。 实验的主要流程图为图2.1所示。 图2.1

在指令系统和CPU逻辑设计时,主要的方法是先根据老师给的指令要求,确定CPU所要实现的功能,根据寄存器等的情况划分指令格式,然后根据功能写出指令,根据不同指令的特点将它们分组并确定操作码;接下来设想每条指令的执行过程,需要哪些硬件支持,最后确定整个CPU的逻辑结构图。 2、2总体说明 2.2.1 CPU组成部件 实验CPU由5部分组成:取指部分instru_fetch、指令译码部分decoder_unit、执行部分exe_unit、存储器部分memory_unit和通用寄存器组fegile.另外,还有一个程序包exe_cpu_components,将各底层设计实体作为元件存储,供各设计实体使用。顶层设计实体exe_cpu完成5个组成部分的链接。 GR(8位,4个寄存器),ALU(8位),时序节拍发生器timer,AR(8位),IR(8位),PC(8位)、PC(8位),RAM(8位),组合期间T1,T2,T3。逻辑控制器件controller,地址总线(8位),数据总线(8位)。 2、2、2整机原理实验图

图2.2.1 图2.2.2

计组实验报告-Debug使用进阶及80X86汇编初步

HUNAN UNIVERSITY 课程实习报告 题目:Debug使用进阶及80X86汇编初步学生姓名 学生学号 专业班级计算机科学与技术二班 指导老师 完成日期2013年4月14日

实验一(较高要求):Debug使用进阶及80X86汇编初步 一、实验目的 通过对基本要求程序的编写,了解debug的基本指令以及操作方法方法。通过对较高要求程序的编写,对寄存器、内存单元的一些复制、显示、转存等操作有了熟练的掌握,并且深刻理解debug指令的含义,执行过程。 二、实验要求 任务一: 课堂上曾书写一个求12+22+……+102的示例程序(见后面附录),请改写该程序,实现求一些毫无规律的任意数的平方和。将这些数定义在内存中,假设这些数据都是字节型的非零无符号数(即1~255),请选用合适的Debug命令定义它们,约定数据值0作为结束标记。 1、将结果放在数据寄存器中,请编写程序,并设计实验过程(用合适的debug 命令),验证程序执行的正确性; 2、若结果要求存放在内存中,请编写程序,并设计实验过程(用合适的debug 命令),验证程序执行的正确性; 注:编写程序和定义初始数据、查看程序运行结果都在Debug下直接进行。每次运行程序时请改变这些平方和数据的值以及数据元素个数,以多方验证程序正确性。 提示:程序中需要用到寄存器间接寻址方式,示例语句:MOV SI, 0200 MOV BL, [SI] 附:课堂上的示例程序

任务二: 假设有如下约束条件:一旦平方和结果超过16位字长,则报出错信息,在屏幕上显示字符串“Overflow Error!”,并停止计算终止程序。请在Debug下重新编写程序并调试,验证程序的正确性。 提示:判断结果超长可在加法指令之后,判断进位标志位CF的值,80X86指令集中条件转移指令JC或JB均可做到这点。 三、实验步骤 1、鼠标单击“开始->程序->附件->命令提示符”,打开DOS窗口,出现命令提示符,键入debug并回车,出现debug程序的提示符,一个短杆“-”。 2、开始汇编,在短杆后输入a100,并将如下所示的在记事本中写好的程序复制粘贴到dos界面中。 mov dx,0 //dx存放平方和,赋初值为0 mov si,200 //将200号内存单元给si mov bl,[si] //将si内存单元中存放的数据给bl mov al,bl //将bl的值给al mul bl //计算bl的平方 cmp al,0 //比较al和0的值,若al=0则停止循环求和 jz 0117 //跳到0117地址的命令继续执行 add dx,ax //计算dx=dx+ax jc 011e //判断是否溢出,若溢出,则跳到011e地址执行其存放的指令 inc si //si自加1 jmp 0106 //跳转到0106进行执行 mov si,240 //将240赋给si mov [si],dx //将平方和结果sx存到si所对应的内存单元中。 int 20 //中断跳转,回到jz 0117的下一步继续执行。 mov dx,0127 //将0127内存的值给dx

西安电子科技大学网络跟继续教育学院微机原理试题资料精

学习中心_________ 姓名_____________ 学号 西安电子科技大学网络与继续教育学院 《微机原理与应用》全真试题 (开卷90分钟) 题号一二三四五六总分 题分30 10 20 10 10 20 得分 一、填空(每空2分,共30分) 1.若(DX)=7BH,(CL)=03H,CF=1,则CPU执行 RCR DX,CL指令后,(DX)= 。 2.8086CPU关于数据的寻址方式中,是存储器寻址方式的有 。 3.若给某微机系统配置16K字节的SRAM电路,SRAM芯片选用Intel6264,则共需片6264芯片。 4.在8086系统中,若某存储器字单元是未对准的,则CPU访问该存储单元需个总线周期完成。若访问另一偶地址存储器字节单元时,使用数据总线。

5. MOV AX,[BP][DI] +13H 指令的源操作数的寻址方式为。 6.若(DS)=0100H ,(SS)=0150H ,(BX)=0003H ,(BP)=0003H ,存储器 (01003H)=5566H,(01503H)=7788H,则CPU执行:MOV AL,[BX]指令后,(AL)= ,CPU执行MOV AX,[BP]指令后,(AX)= 。 7. 将十进制数75用分离BCD码形式定义到BCDWORD字单元的伪指令定义 语句为。 8.若(DL)=OFFH,CF=0,则CPU 执行INC DL 指令后,CF= ,(DL)= 。 9.8086CPU的字符串处理指令的目的串地址默认在。 10.I/O 地址译码方式有部分地址译码和。 11.若分配给某存储器单元的逻辑地址为8B90H:7850H,则该单元的物理地址为 H。 12.十进制数-100的补码为 B。 二、判断下列指令语法书写是否正确,对于正确指令打√,并分别说明源 操作数的寻址方式,对于错误指令打×,说明其错误原因。(10分)(设VARB为字节变量,VARW为字变量) 1.MOV DS, SEG VARW 2.SUB DX, VARB 3.PUSH 12ABH

西安电子科技大学微机原理上机题37题

编写程序实现将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号> 数据2 <原序号> 数据3 <原序号> ················ 程序如下(效果图): N=100 DATAS SEGMENT BUFFER LABEL WORD X=55519 REPT 100 X=(X+7517)mod 65535 DW X ENDM NUMBER LABEL BYTE Y=0 REPT 100 Y=Y+1 DB Y ENDM DECIMAL DB 5 DUP(?) M DW 1 DUP(?) DATAS ENDS STACKS SEGMENT DW 100H DUP(?)

TOP LABEL WORD STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV ES,AX MOV AX,STACKS MOV SS,AX LEA SP,TOP XOR AX,AX ;开始程序 LEA SI,BUFFER LEA DI,NUMBER CALL SORT MOV CX,N ;显示程序开始 L1: MOV AX,[SI] MOV M,5 CALL DISPAXD CALL DISPEM ADD SI,2 ;显示数值 XOR AX,AX MOV AL,[DI] MOV M,3 CALL DISPAXD CALL DISPCR INC DI ;显示序号 LOOP L1 MOV AH,4CH MOV AL,0 INT 21H SORT PROC NEAR PUSH SI PUSH DI PUSH AX PUSH BX PUSH CX MOV CX,N;开始冒泡程序 DEC CX LP1: ;外循环 PUSH SI PUSH DI

西电微机原理第二次上机实验报告

西电微机原理第二次上机实验报告 学号:姓名: 一、实验目的 1.熟练掌握汇编语言程序设计的方法及上机步骤。 2.掌握算术运算中,十进制数调整指令的应用。 3.掌握子程序的设计方法。 4.掌握DOS功能的调用方法。 二、实验仪器 586微机 1台 三、实验内容 编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。 编程要求与提示: [1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。 [2] 和以压缩十进制数的形式存入SUM以下单元。 [3] 将和送到屏幕显示部分功能的实现采用子程序的形式。 [4] 实验步骤如下: a. 用全屏幕编辑软件建立源程序。 b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。 c. 用link.exe连接程序对目标程序进行连接形成可执行文件。 d. 用DEBUG对连接通过的可执行程序进行调试。 四、实验内容对应的源程序及流程 源程序如下: STACK SEGMENT STACK DB 10H DUP(00) STACK ENDS DATA SEGMENT ADD1 DB 12H,67H,85H,32H ADD2 DB 21H,73H,65H,43H SUM DB 4H DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:

MOV AX, DATA MOV DS, AX MOV AX, DATA MOV ES, AX MOV AX,STACK MOV SS,AX LEA SI, ADD1[3] LEA BX, ADD2[3] LEA DI,SUM[3] MOV CX,4 CLC L1: MOV AL,[SI] ADC AL,[BX] DAA MOV [DI],AL DEC SI DEC BX DEC DI LOOP L1 CALL DISPAL ; ------------EXITPROC: MOV AH,4CH ;结束程序 MOV AH,1 INT 21H ; ------------DISPAL PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI LEA DI,SUM MOV CX,4 DISPAL2: MOV AL,[DI] SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 MOV AH,2 MOV DL,AL ADD DL,30H

计组实验报告(启停器)

河北大学计算机组成原理实验报告 学院计算机科学与技术学院年级13级专业计科学号2013434151姓名汪凡 实验日期2015.10.26 实验地点c1-228指导老师张旭东实验项目实验6.8.1 启停电路成绩 一、实验目的: 通过该实验,加深自己对计算机“时标系统”相关知识的理解与把握,深入了解计算机能够得以自动化工作的基础。同时,利于对于计算机及类似设备的“时标系统”的问题特殊性、解决问题的基本思路、可用方法与技术等有着系统的理解与把握。 二、实验环境: PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件、TEC-CA实验箱。 三、实验要求: 按照实验6.8.1介绍的方法与流程,完成启停电路和节拍序列发生器的设计,在实验箱上实现操作。 四、实验原理及知识要点: 单周期“·M4 具有维持—阻塞功能的启停线路

1. “停止”工作状态 当实验电路处于“停止”工作状态时,“维持阻塞电路”中的“启停触发器”处于“停机”状态,“维持阻塞电路”输出“清0”信号到“二进制计数器” ,使计数器清0,M1~M8 均为无效状态,所有显示灯均不亮。 由于“维持阻塞电路”不输出M’到“二进制计数器” ,计数器不计数。 2. “单周期”工作状态 在实验电路处于“停止”工作状态时,若“单周期/连续”开关被拨到“单周期”位置,按A1,电路即处于“单周期”工作状态。 当“维持阻塞电路”收到A1 信号后,“启停触发器”被置为“启动”状态,“维持阻塞电路”向“二进制计数器”发出“清0”无效和系列M’ 。在这两个信号的共同作用下,“二进制计数器”开始计数,“组合译码网络”的输出使相应的显示灯显示设定的时序信号序列。 当“二进制计数器”的计数使“组合译码网络”产生M4时,图中的“与非”门输出变为“0” 。此信号一方面使实验台上的“停机”相关电路工作,结束M’ 的发送,同时,使“维持阻塞电路”中的“启停触发器”的状态由“启动”变为“停机”状态。这使得“维持阻塞电路”发送给“二进制计数器”的“清0”信号变为“有效” ,而使M’变为“无效” 。在其作用下,“二进制计数器”被清0。电路由此变为“停止”工作状态。 3. “连续”工作状态 当“单周期/连续”开关被拨到“连续”位置,并按一下A1 微动开关后,实验电路被置于“连续”工作状态。 在“维持阻塞电路”中的“启停触发器”在A1 信号的作用下被置为“启动”状态后,“维持阻塞电路”连续地向“二进制计数器”发出信号,使之进行计数,如“单周期”状态那样,“组合译码网络”依序输出系列时序控制信号,相应的显示灯被规则的点亮。 在“二进制计数器”的计数使“组合译码网络”产生M4时,由于图中的“与非”门的连接到“单周期/连续”开关的一端被置为低电位,其输出不能使“维持阻塞电路”中的“启停触发器”改变状态,因而“二进制计数器”继续处于计数状态,当其计到1111后,继续从0000计数,“组合译码网络”输出下一个系列的时序控制信号。 在实验电路“连续”工作的过程中,若将“单周期/连续”开关拨到“单周期” ,则仅当本工作周期中的M4 出现时才能使“维持阻塞电路”中的“启停触发器”的状态发生变化,由此,如“单周期”工作方式那样,使电路变为“停止”工作状态。 这就是说,当一个序列的时序控制信号开始产生后,不管人们在什么时候将“单周期/连续”开关拨到“单周期”位置(相当于实际机器中的“停机”信号),电路都必须等到一个周期的时序控制信号全部发出后才能停止时序控制信号的发出。 五、实验步骤及结果:

相关主题
文本预览
相关文档 最新文档