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

西电微机原理实验报告

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

微机系统实验报告

班级: 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功能调用

四、实验步骤

(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:DATA

START:

MOV AX,DATA

MOV DS,AX

mov ah,09h

mov DX,OFFSET BUFFER

int 21h

MOV SI,OFFSET BUFFER2

lab1:

cmp BYTE PTR [SI],'$'

je lab2

MOV AL,DS:[SI]

AND AL,0F0H ;取高4位

MOV CL,4

SHR AL,CL

CMP AL,0AH ;是否是A以上的数

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL ;show character

MOV AH,02H

INT 21H

MOV AL,DS:[SI]

AND AL,0FH ;取低4位

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL ;show character

MOV AH,02H

INT 21H

add SI,1

jmp lab1

lab2:

mov ah,09h

mov DX,OFFSET BUFFER3

int 21h

mov ah,01h

int 21h

cmp al,'q'

je lab3

mov BL,AL

AND AL,0F0H ;取高4位

MOV CL,4

SHR AL,CL

CMP AL,0AH ;是否是A以上的数

JB C4

ADD AL,07H

C4: ADD AL,30H

MOV DL,AL ;show character

MOV AH,02H

INT 21H

MOV AL,BL

AND AL,0FH ;取低4位

CMP AL,0AH

JB C5

ADD AL,07H

C5: ADD AL,30H

MOV DL,AL ;show character

MOV AH,02H

INT 21H

jmp lab2

lab3:

mov ah,4ch

int 21h

CODE ENDS

end 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码转换为二进制,要求输入位数小于5

DATA SEGMENT

MES 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,35H

DB 10H DUP(0)

N DW 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV DI,OFFSET BUF

CLC

MOV DX,OFFSET MSG1

MOV AH,09H ;显示字符串

INT 21H

MOV DX,OFFSET MSG2

MOV AH,09H

INT 21H

A1: MOV AH,01H ;接收键盘输入

INT 21H

CMP AL,'Q'

JZ EXIT

CMP AL,'q'

JZ EXIT

CMP AL,39H

JA ERROR

INC N

STOSB ;将输入数据存放在BUF缓冲区中

CMP AL,13

JNE A1

MOV CX,N

DEC CX

MOV BX,000AH

MOV SI,OFFSET BUF

MOV AH,0

MOV DX,0

LODSB

CMP CX,1

JE A3

SUB AL,30H ;将BUF中数据转换为二——十进制数

DEC CX

A2: IMUL BX

MOV DX,AX

LODSB

MOV AH,0

A3: SUB AL,30H

ADD AX,DX

LOOP A2

MOV [SI],AX

MOV DX,OFFSET MES

MOV AH,09H

INT 21H

INC SI ;显示高字节

CALL SHOW

DEC SI ;显示低字节

CALL SHOW

MOV N,0

LOOP START

SHOW PROC NEAR

MOV AL,DS:[SI]

AND AL,0F0H ;取高4位

MOV CL,4

SHR AL,CL

CMP AL,0AH ;是否是A以上的数

JB C2

ADD AL,07H

C2: ADD AL,30H

MOV DL,AL ;show character

MOV AH,06H

INT 21H

MOV AL,DS:[SI]

AND AL,0FH ;取低4位

CMP AL,0AH

JB C3

ADD AL,07H

C3: ADD AL,30H

MOV DL,AL ;show character

MOV AH,06H

INT 21H

RET

SHOW ENDP

EXIT: MOV AX,4C00H

INT 21H

ERROR: MOV DX,OFFSET MSG3

MOV AH,09H

INT 21H

JMP START

CODE ENDS

END 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_DATA

MOV DS,AX

MOV AX,MY_STACK

MOV SS,AX

LOP: MOV DX,0DF00H

IN AL,DX

CMP AL,00H

JE C0

CMP AL,0FFH

JE C3

;JE EXIT

MOV DX,0DF20H

OUT DX,AL

JMP LOP

C0: MOV AL,0FEH

JMP C1

C3: MOV AL,07FH

JMP C2

C1: ;ROL AL,1

;MOV DX,0DF20H

;OUT DX,AL

;CALL DELAY

;CALL BREAK

;JE C1

;CMP AL,0FEH

;JE EXIT

;JMP C1

;MOV AL,0FCH

MOV DX,0DF20H

OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0FDH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0FBH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0F7H MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0EFH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0DFH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0BFH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,07FH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0FFH

MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

CALL DELAY

CALL BREAK

JMP LOP

;CALL DELAY

;CALL BREAK

IN AL,DX

CMP AL,080H

JMP EXIT

C2:

MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0BFH

MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0DFH

MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0EFH

MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0F7H

MOV DX,0DF20H

OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0FBH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0FDH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0FEH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

MOV AL,0FFH MOV DX,0DF20H OUT DX,AL

CALL DELAY

CALL BREAK

CALL DELAY

CALL BREAK

JMP LOP

IN AL,DX

CMP AL,080H JMP EXIT

EXIT: MOV AH,4CH

INT 21H

2、循环左移右移实现:主要代码:

(1)右移:

LOP: MOV DX,0DF00H IN AL,DX

CMP AL,0FFH JE C0

;JE EXIT

MOV DX,0DF20H OUT DX,AL

JMP LOP

C0: MOV AL,07FH JMP C1

C1: ROR AL,1

MOV DX,0DF20H OUT DX,AL

CALL DELAY

call break

;CMP AL,0FEH ;JE EXIT

JMP C1

IN AL,DX

CMP AL,080H JMP EXIT (2)循环左移:

LOP: MOV DX,0DF00H IN AL,DX

CMP AL,00H

JE C0

;JE EXIT

MOV DX,0DF20H OUT DX,AL

JMP LOP

C0: MOV AL,0FEH JMP C1

C1: ROl AL,1

MOV DX,0DF20H OUT DX,AL

CALL DELAY

call break

;CMP AL,0FEH ;JE EXIT

JMP C1

IN AL,DX

CMP AL,080H

JMP EXIT

实验四可编程并行接口8255实验

一、实验目的

了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。

二、实验内容

(1)流水灯实验:利用8255的A口、B口循环点亮发光二极管。

(2)交通灯实验:利用8255的A口模拟交通信号灯。

(3) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。

(4)通过开关控制交通红绿灯的亮灭。

(5)通过开关控制流水灯的循环方向和循环方式。

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

三、实验说明

1、8255A的内部结构

(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。

(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。

(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A 口和C口上半部,B组控制电路控制B口和C口下半部。

(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。

2、8255A的工作方式

杭电计组实验报告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 出现时才能使“维持阻塞电路”中的“启停触发器”的状态发生变化,由此,如“单周期”工作方式那样,使电路变为“停止”工作状态。 这就是说,当一个序列的时序控制信号开始产生后,不管人们在什么时候将“单周期/连续”开关拨到“单周期”位置(相当于实际机器中的“停机”信号),电路都必须等到一个周期的时序控制信号全部发出后才能停止时序控制信号的发出。 五、实验步骤及结果:

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