文档库 最新最全的文档下载
当前位置:文档库 › 北邮微原软件实验报告

北邮微原软件实验报告

北邮微原软件实验报告
北邮微原软件实验报告

微原软件实验报告

班级:2009211119 班

学号:09210550

班内序号:07

姓名:胡易

实验二分支,循环程序设计

一.实验目的:

1.开始独立进行汇编语言程序设计;

2.掌握基本分支,循环程序设计;

3.掌握最简单的DOS 功能调用.

二.实验内容:

1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9.

2.编写一个程序统计数据区中正数,负数和零的个数.

3.将统计结果在屏幕上显示.

三.程序流程图

四.源程序

data segment

buff dw 22,11,33,0,55,-11,-32,-45,-56,123,-121

count equ $-buff

plus db ? ;大于0的个数

zero db ? ;等于0的个数

minus db ? ;小于0的个数

string1 db 'zhengshu:','$'

string2 db 'fushu:','$'

string3 db '0:','$'

data ends

stack segment stack'stack'

db 100 dup(?)

stack ends

code segment

assume cs:code,ds:data,ss:stack

start: mov ax,data

mov ds,ax

mov cx,count

shr cx,1

mov dx,0

mov ah,0

mov bx,offset buff

again: cmp word ptr [bx],0

jge plu ;判断是否大于等于0,是就跳转

inc ah ;小于0的个数加1

jmp next

plu: jz zer ;判断是否等于0.是就跳转

inc dl ;大于0的个数加1

jmp next

zer: inc dh ;等于0的个数加1

next: inc bx

inc bx ;修改指针地址

loop again

mov plus,dl ;将大于0,小于0,等入0个数存入

mov zero,dh

mov minus,ah

call show1 ;显示最终结果

call show2

call show3

mov ax,4c00h

int 21h

show1 proc near ;显示大于0的数

push dx

mov ah,09h

mov dx,seg string1

mov ds,dx

mov dx,offset string1

int 21h

mov al,plus

add al,'0'-0h

mov ah,02h

mov dl,al

int 21h

mov dl,0ah

int 21h

pop dx

ret

show1 endp

show2 proc near ;显示小于0的数push dx

mov ah,09h

mov dx,seg string2

mov ds,dx

mov dx,offset string2

int 21h

mov al,minus

add al,'0'-0h

mov ah,02h

mov dl,al

int 21h

mov dl,0ah

int 21h

pop dx

ret

show2 endp

show3 proc near ;显示等于0的数push dx

mov ah,09h

mov dx,seg string3

mov ds,dx

mov dx,offset string3

int 21h

mov al,zero

add al,'0'-0h

mov ah,02h

mov dl,al

int 21h

mov dl,0ah

int 21h

pop dx

ret

show3 endp

code ends

end start

五.程序运行结果

六.预习题

1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?

0-9的ascii码为,30h,31h,32h,34h,35h,36h,37h,38h,39h,

将要显示的数加上30h,得到该数的ascii码,再利用DOS功能调用显示单个字符

2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?

利用cmp指令,利用TEST指令,将该数与0相减,观察标志位。

检查最高位,为0是正数,为1时再检查其他位判断是负数或0

七.实验心得与体会

这次实验我主要练习了基本的分支结构程序的编写,以及简单的DOS功能调用,并利用debug功能查找程序中的逻辑错误,由于程序比较简单,所以没有花费太多时间,但仍然让我对汇编语言有了一个新的认识

实验三代码转换程序设计

一.实验目的:

1.掌握几种最基本的代码转换方法;

2.运用子程序进行程序设计.

二.实验内容:

1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来.

2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明.

3.对输入要有检错措施,以防止非法字符输入,并有适当的提示.

4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.

三.程序流程图

模块层次图

四.源程序

data segment

minh db 9

minl db 9

number1 db 100 dup(?)

number2 db 100 dup(?)

error db 'input error,pleaes input again',0dh,0ah,'$' welcome db 'please number:',0dh,0ah,'$'

result db 'the min is:',0ah,'$'

data ends

stack segment stack'stack'

db 100 dup(?)

stack ends

code segment

assume cs:code,ds:data,ss:stack start: mov bx,0

mov ax,data

mov ds,ax

mov si,offset number1

mov di,offset number2

call welc

loop1: call get1

cmp bl,01

jz start

loop2: mov [si],al

call get2

cmp bl,02

jz start

call compare

inc si

inc di

call get3

cmp al,0dh

jz over

cmp al,'0'

jb start

cmp al,'9'

jb loop2

jmp start

over: mov ah,02h

mov dl,0dh

int 21h

mov bx,offset minh

mov ah,[bx]

add ah,'0'-0

mov [bx],ah

mov bx,offset minl

mov al,[bx]

add al,'0'-0

mov [bx],al

mov ah,09h

mov dx,seg result

mov ds,dx

mov dx,offset result

int 21h

mov ah,02h

mov bx,offset minh

mov dl,[bx]

int 21h ;显示十位数

mov bx,offset minl

mov dl,[bx]

int 21h ;显示个位数

mov ax,4c00h

int 21h

compare proc near

push ax

push bx

mov ah,[si]

mov al,[di]

sub ah,'0'-0

sub al,'0'-0

mov bx,offset minh

cmp ah,[bx]

jb e1 ;十位小于现存数,直接将AH,AL,赋给minh,minl

ja e2 ;大于现存数,返回主程序

mov bx,offset minl

cmp al,[bx] ;比较个位,大于就直接跳到返回主程序

ja e2

e1: mov bx,offset minh

mov [bx],ah

mov bx,offset minl

mov [bx],al

e2: pop ax

pop bx

ret

compare endp

welc proc near

mov ah,09h

mov dx,seg welcome

mov ds,dx

mov dx,offset welcome

int 21h

ret

welc endp

get1 proc near ;取第一个数字mov ah,01h

int 21h

cmp al,'0'

jbe error1

cmp al,'9'

jae error1

jmp endpp

error1: mov bl,01h

mov ah,09h

mov dx,seg error

mov ds,dx

mov dx,offset error

int 21h

endpp: ret

get1 endp

get2 proc near ;取第二个数字mov ah,01h

int 21h

cmp al,'0'

jb error2

cmp al,'9'

jae error2

mov di],al

mov ah,02h

mov dl,','

int 21h

jmp endpp2

error2: mov bl,02h

mov ah,09h

mov dx,seg error

mov ds,dx

mov dx,offset error

int 21h

endpp2: ret

get2 endp

get3 proc near ;判断结束或空格mov ah,01h

int 21h

ret

code ends

end start

程序分析:

在该实验中,我总共定义了4个子程序,get1用于输入第一个字符,在输入后检测输入的是否是0-9的数,不是则报错重新输入,是则存储到相应内存

中,get2用于输入第二个字符,检测如果是数字的话则存入相应内存,并且输出“,”表示一个两位十进制数输入完毕,再调用get3函数,若为数字则继续调用get2输入数字,若为回车则进入最后输出结果,若为其他字符则报错重新输入。输入完毕后按回车键显示最终结果

五.程序运行结果

六.预习题

1如何将输入的两个字符(0 -- 9)变为十进制或二进制数?

将输入的字符减去30H,可得到十进制数

2如何将选出的最小值(二进制或十进制)变为ASCII 码再进行显示?

先定义一个字节的数据,分为十位和低位,每次将输入的数十位和已存的十位相比较,若小于则将输入的字符和已存的交换,大于则不交换,等于时比较个位,若小于则交换,最后将十位和个位分别加上30H变为相应的ascii码输出

3你觉得采用二进制运算还是十进制运算更适合于这个实验?

十进制

七.实验心得与体会

这次的实验相较于上次复杂了很多,光编写代码的时间就用了2个小时,期间不断的思考如何输入,如何储存,如何比较,最后又参考了同学的代码才写完,写完后一编译发现又有很多错,于是乎不断的在debug环境下用t命令G命令D命令调试,查错,找到一个错改过来再重新编译继续debug,这个过程一共持续了3个小时才最终将所有的逻辑错误改好,也终于输出了正确的结果。这次实验主要是考察了进制转换的相关知识,认识到了输入的ascii码和数值之

间的关系,也学会了DOS功能调用。在该程序中共定义了4个子程序,在写完后觉得还有很多地方也可以定义子程序完成,但是由于急于求成就没有再花心思,导致程序在最后有些冗长,这些是以后需要避免的,总的来说,这次实验是第一次遇到比较多的挑战,但自己都慢慢的解决了,很有成就感。

实验四子程序设计

一.实验目的:

1.进一步掌握子程序设计方法;

2.进一步掌握基本的DOS 功能调用.

二.实验内容:

1.从键盘上输入某班学生的某科目成绩.输入按学生的学号由小到大的顺序输入.

2.统计检查每个学生的名次.

3.将统计结果在屏幕上显示.

4.为便于观察,输入学生数目不宜太多,以不超过一屏为宜.输出应便于阅读.尽可

能考虑美观.

5.输入要有检错手段.

三.程序流程图

模块层次:

四.源程序

data segment

minh db 9

minl db 9

number1 db 100 dup(?) ;存储十位

number2 db 100 dup(?) ;存储个位

error db 'input error,pleaes input again',0dh,0ah,'$'

welcome db 'please input number:',0dh,0ah,'$'

result db 'the minist is:',0ah,'$'

data ends

stack segment stack'stack'

db 100 dup(?)

stack ends

code segment

assume cs:code,ds:data,ss:stack

start: mov bx,0

mov cx,0

mov ax,data

mov si,offset number1

mov di,offset number2

call welc

loop1: call get1

cmp bl,01

jz start

loop2: mov [si],al

call get2

cmp bl,02

jz start

call compare

inc si

inc di

call get3

cmp al,0dh

jz over

cmp al,41h

jz A

cmp al,'0'

jb start

cmp al,'9'

jbe loop2

jmp start

over: mov ah,02h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

mov bx,offset minh

mov ah,[bx]

add ah,'0'-0

mov [bx],ah

mov bx,offset minl

mov al,[bx]

add al,'0'-0

mov [bx],al

mov ah,09h

mov dx,seg result

mov ds,dx

mov dx,offset result

int 21h

mov ah,02h

mov bx,offset minh

int 21h

mov bx,offset minl

mov dl,[bx]

int 21h

mov ah,02h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

call sort

mov si,offset number1

mov di,offset number2

mov ah,02h

display: mov dl,[si]

int 21h

mov dl,[di]

int 21h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

inc si

inc di

loop display

A: mov ax,4c00h

int 21h

compare proc near

push ax

push bx

mov ah,[si]

mov al,[di]

sub ah,'0'-0

sub al,'0'-0

mov bx,offset minh

cmp ah,[bx]

jb e1 ;十位小于现存数,直接将AH,AL,赋minh,minl

ja e2 ;大于现存数,返回主程序

mov bx,offset minl

cmp al,[bx] ;比较个位,大于就直接跳到返回主程序

ja e2

e1: mov bx,offset minh

mov [bx],ah

mov bx,offset minl

mov [bx],al

e2: pop ax

pop bx

ret

compare endp

welc proc near

mov ah,09h

mov dx,seg welcome

mov ds,dx

mov dx,offset welcome

int 21h

ret

welc endp

get1 proc near ;取第一个数字

mov ah,01h

int 21h

cmp al,'0'

jb error1

cmp al,'9'

ja error1

jmp endpp

error1: mov bl,01h

mov ah,09h

mov dx,seg error

mov ds,dx

mov dx,offset error

int 21h

endpp: ret

get1 endp

get2 proc near ;取第二个数字mov ah,01h

int 21h

cmp al,'0'

jb error2

cmp al,'9'

ja error2

mov [di],al

mov ah,02h

mov dl,','

int 21h

微机原理与接口技术硬件实验报告

微原硬件实验报告 班级:07118 班 学号:070547 班内序号:26 姓名:杨帆

实验一熟悉实验环境及IO的使用 一,实验目的 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。 3. 学会Debug 的使用及编写汇编程序 二,实验内容 1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度 等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三,实验步骤 1.实验板的IO 端口地址为EEE0H 在Debug 下, I 是读命令。(即读输入端口的状态---拨码开关的状态) O 是写命令。(即向端口输出数据---通过发光管来查看) 进入Debug 后, 读端口拨动实验台上八位拨码开关 输入I 端口地址回车 屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口 输入O 端口地址xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在Debug 环境下,用a 命令录入程序,用g 命令运行 C>Debug -a mov dx, 端口地址 mov al,输出内容 out dx, al

mov ah, 0bh int 21h or al, al jz 0100 int 20h -g 运行查看结果,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用 3.利用EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm 录入程序 按Alt 键打开菜单进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件或用Debug 进行调试。 四,程序流程图

微机原理与接口技术 北邮 软件 实验报告

微机原理与接口技术软件实验报告

实验B 分支、循环程序设计 一、实验目的 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS功能调用。 二、实验任务及内容 1.安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过9。 2.编写一个程序统计数据区中正数,负数和零的个数。 3.将统计结果在屏幕上显示。 4. 选作题: 统计出正奇数,正偶数,负奇数,负偶数以及零的个数.

四、源程序 DISPSTR MACRO STR ;打出字符串(属于DOS功能调用)MOV AH,9 MOV DX,SEG STR MOV DS,DX MOV DX,OFFSET STR INT 21H ENDM DISPNUM MACRO NUM ;打出数字(属于DOS功能调用)MOV AH,2 MOV DL,NUM ADD DL,30H ;加30H变为ASCII码 INT 21H ENDM DATA SEGMENT NUM DB 3,2,7,0,1,0,-5,-4,0 COUNT EQU $-NUM ;统计数据个数 ZEROS DB 0 ;各类数初值均为0 PLUSES DB 0 MINUSES DB 0 EVENMINUSES DB 0 ODDMINUSES DB 0 EVENPLUSES DB 0 ODDPLUSES DB 0 ZEROSTR DB 0DH,0AH,'ZERO:$' ;待输出字符串

PLUSSTR DB 0DH,0AH,'PLUS:$' MINUSSTR DB 0DH,0AH,'MINUS:$' EVENMINUSSTR DB 0DH,0AH,'EVENMINUS:$' ODDMINUSSTR DB 0DH,0AH,'ODDMINUS:$' EVENPLUSSTR DB 0DH,0AH,'EVENPLUS:$' ODDPLUSSTR DB 0DH,0AH,'ODDPLUS:$' DATA ENDS STACK SEGMENT STACK 'STACK' DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START PROC FAR PUSH DS ;初始化 MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV CX,COUNT ;CX控制循环次数 MOV SI,OFFSET NUM ;SI指向数据的偏移地址 LOOP1: CMP BYTE PTR[SI],0 ;将SI指向的内容与0比较大小JZ ZERO ;等于0跳转 JG PLUS ;大于0跳转 INC MINUSES ;负数加一 SHR BYTE PTR[SI],1 ;判断是负奇数还是负偶数 JNC EVENMINUS ;是负偶数跳转 INC SI ;SI指针后移 INC ODDMINUSES ;负奇数加一 RETURN: LOOP LOOP1 ;循环直至CX=0 JMP DISP ;循环结束后跳转至打出结果 ZERO: INC ZEROS INC SI JMP RETURN ;返回循环体 PLUS: INC PLUSES SHR BYTE PTR[SI],1 JNC EVENPLUS

北邮通原硬件实验报告(DOC)

2013年通信原理硬件实验报告 学院:信息与通信工程学院 班级:2011211104 姓名: 学号: 班内序号: 组号: 同组人:

目录 实验一:双边带抑制载波调幅(DSB-SC AM) (3) 实验二:具有离散大载波的双边带调幅波(AM) (14) 实验三:调频(FM) (21) 实验六:眼图 (28) 实验七:采样,判决 (31) 实验八:二进制通断键控(OOK) (34) 实验十一:信号星座(选作) (41) 实验十二:低通信号的采样与重建 (45)

实验一双边带抑制载波调幅(DSB-SC AM) 一.实验目的 (1)了解DSB-SC AM信号的产生及相干解调的原理和实现方法。 (2)了解DSB-SC AM的信号波形及振幅频谱的特点,并掌握其测量方法。 (3)了解在发送DSB-SC AM信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。 (4)掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的测试方法。 二.实验器材 PC机一台、TIMS实验平台、示波器、导线等。 三.实验原理 1.双边带抑制载波调幅(DSB-SC AM)信号的产生和表达式 图1.1 2.双边带抑制载波调幅信号的解调 基本思路:利用恢复的载波与信号相乘,将频谱搬移到基带,还原出原基带信号。 图1.2 3.DSB-SC AM信号的产生及相干解调原理框图 ()()()()() cos c c c s t m t c t m t A t ω? ==+

图1.3 四.实验内容及结果 1.DSB-SC AM信号的产生 (1)实验步骤: 图1.4 1.按照上图,将音频振荡器输出的模拟音频信号及主振荡器输出的100KHz模

北邮微原硬件实验报告

2013年微机原理硬件实验报告 学院:信息与通信工程学院班级:2011211104 姓名:

实验一 I/O地址译码 一.实验目的 掌握I/O地址译码电路的工作原理。 二.实验原理和内容 1.实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。 译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 原理:地址2A0H的A5,A4,A5为100,在输入或输出时,IOW或I OR为0,使得74LS138被选中,经过译码,在Y4口输出负脉冲。其他同理。 图1-1 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。 2.接线:Y4/IO地址接CLK/D触发器

Y5/IO 地址 接 CD/D 触发器 D/D触发器 接 SD/D 角发器 接 +5V Q /D 触发器 接 L7(L ED 灯)或 逻辑笔 三.程序流程图 四.源程序 DA TA ?SE GMENT D ATA ??ENDS ST ACK SE GME NT ST ACK 'STA CK' DB 100H DU P(?) STA CK ENDS 否

北邮微原硬件实验

信息与通信工程学院 微原硬件实验报告 姓名: 班级: 学号: 班内序号: 【一.基本的I/O实验】 实验一 I/O地址译码 一、实验目的 掌握I/O地址译码电路的工作原理。 二、实验原理和内容 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台 上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:

280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 图1-1 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。 2、接线: Y4/IO地址接 CLK/D触发器 Y5/IO地址接 CD/D触发器 D/D触发器接 SD/D角发器接 +5V Q/D触发器接 L7(LED灯)或逻辑笔 三、硬件接线图及软件程序流程图 1.硬件接线图 2.软件程序流程图

四、源程序 DATA SEGMENT DATA ENDS STACK SEGMENT STACK 'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ;基本框架;延时子程序 DELAY1 PROC NEAR MOV BX,500H PUSH CX LOOP2: MOV CX,0FFFH WAIT1: LOOP WAIT1 DEC BX JNZ LOOP2 POP CX RET DELAY1 ENDP START: MOV CX,0FFFFH ;L7闪烁控制 LOOP1: MOV DX,2A0H ;灯亮 OUT DX,AL CALL DELAY1 MOV DX,2A8H ;灯灭 OUT DX,AL CALL DELAY1 LOOP LOOP1 ;循环闪烁 CODE ENDS END START 五、实验结果 灯L7闪烁 实验二简单并行接口 一、实验目的 掌握简单并行接口的工作原理及使用方法。(选择273进行实验)二、实验原理和内容

北京邮电大学通信原理软件实验报告

北京邮电大学实验报告 题目:基于SYSTEMVIEW通信原理实验报告

实验一:验证抽样定理 一、实验目的 1、掌握抽样定理 2. 通过时域频域波形分析系统性能 二、实验原理 低通滤波器频率与m(t)相同 三、实验步骤 1. 要求三个基带信号相加后抽样,然后通过低通滤波器恢复出原信号。 2. 连接各模块完成系统,同时在必要输出端设置观察窗。 3. 设置各模块参数。 三个基带信号的频率从上到下分别设置为10hz、12hz、14hz。 抽样信号频率设置为28hz,即2*14hz。(由抽样定理知,) 将低通滤波器频率设置为14hz,则将恢复第三个信号(其频率为14hz)进行系统定时设置,起始时间设为0,终止时间设为1s.抽样率设为1khz。 3.观察基带信号、抽样后的信号、最终恢复的信号波形

四、实验结果 最上面的图为原基带信号波形,中间图为最终恢复的信号波形,最下面的图为抽样后的信号波形。 五、实验讨论 从实验结果可以看出,正如前面实验原理所述,满足抽样定理的理想抽样应该使抽样后的波形图如同冲激信号,且其包络图形为原基带信号波形图。抽样后的信号通过低通滤波器后,恢复出的信号波形与原基带信号相同。 由此可知,如果每秒对基带模拟信号均匀抽样不少于2次,则所得样值序列含有原基带信号的全部信息,从该样值序列可以无失真地恢复成原来的基带信号。 讨论:若抽样速率少于每秒2次,会出现什么情况? 答:会产生失真,这种失真被称为混叠失真。 六、实验建议、意见 增加改变抽样率的步骤,观察是否产生失真。

实验二:奈奎斯特第一准则 一、实验目的 (1)理解无码间干扰数字基带信号的传输; (2)掌握升余弦滚降滤波器的特性; (3)通过时域、频域波形分析系统性能。 二、实验原理 在现代通信系统中,码元是按照一定的间隔发送的,接收端只要能够正确地恢复出幅度序列,就能够无误地恢复传送的信号。因此,只需要研究如何使波形在特定的时刻无失真,而不必追求整个波形不变。 奈奎斯特准则提出:只要信号经过整形后能够在抽样点保持不变,即使其波形已经发生了变化,也能够在抽样判决后恢复原始的信号,因为信息完全恢复携带在抽样点幅度上。 奈奎斯特准则要求在波形成形输入到接收端的滤波器输出的整个传送过程传递函数满足:,其充分必要条件是x(t)的傅氏变换X ( f )必须满足 奈奎斯特准则还指出了信道带宽与码速率的基本关系。即R B =1/T B =2? N =2B N。 式中R b 为传码率,单位为比特/每秒(bps)。f N 和B N 分别为理想信道的低通截止 频率和奈奎斯特带宽。上式说明了理想信道的频带利用率为R B /B N =2。 在实际应用中,理想低通滤波器是不可能实现的,升余弦滤波器是在实际中满足无码间干扰传输的充要条件,已获得广泛应用的滤波器。 升余弦滤波器的带宽为:。其中,α为滚降系数,0 ≤α≤1, 三、实验步骤 1.根据奈奎斯特准则,设计实现验证奈奎斯特第一准则的仿真系统,同时在必 要输出端设置观察窗。设计图如下

北邮微机原理中断程序报告

北京邮电大学实验报告 题目:微机原理软件实验 学院:信息与通信工程 专业:信息工程______ 中断实验报告 一、实验目的 1、初步掌握中断程序的设计方法; 2、初步掌握修改 DOS 系统中断,以适应实际使用的方法。

二:实验要求 编一程序,在显示器上显示时、分、秒。 1:借用计数器8253的Timer0作为中断源,通过8259A下向CPU发中断,每10ms 产生一次中断。 2:在中断服务程序中管理刷新时、分、秒。 3:输入文件名(如:CLK)后清屏显示 Current time is XX:XX:XX(时分秒键盘输入) 打回车,时、分、秒开始计时,时钟不停的刷新。 4:当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。 提示: 1、8253的初始化程序段可借用。 2、口地址为40H、41H、42H、43H,控制字为36H=00110110B 3、时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms 三:设计思路 这个实验需要用到中断控制器8259A和计数器8253。我们先初始化8253的工作方式,利用工作方式3来计数时间,让其分频后产生100hz的方波,每100个周期即为1s,将这个方波作为中断源,通过8259A每10ms向CPU发出一次中断。然后我们将子程序Timer0的地址(CS以及IP)设置为中断向量,每次中断即执行这个子程序,在这个之程序中编写相应代码,看时间是否到1S,没到则跳出中断,等待下一次(1ms之后)中断到来,到1S则让时间+1并且重置计数值,再加上相应的时间显示程序,这样即可实现时间的自动增加与显示,可以当做一个计时器来用,这即是这个工程的主体部分。 除此之外,还需要一部分程序来实现键盘输入相应时间,这里要注意时间的每一位都有取值方面的要求,这里就要通过一系列的CMP/JMP指令的组合来达到正确输入的效果,将顺序输入的时间存储起来,配合Timer0子程序即可输出当前设置的时间并且实现时间刷新。当然,如果选择不输入时间直接回车的话,程序可以从0开始计时,可以当成一个秒表。 还有一些细节的设计如在计时过程中输入S可以重新设置时间,Ctrl+C可以退出这些也是利用CMP/JMP组合来实现。最后整个程序可以实现以下功能:可以设置开始时间然后自动计时,也可以当做秒表来使用,可以正常退出。 四:实验流程

北邮通原软件实验

实验一 实验目的:假设基带信号为m(t)=sin(2000πt)+2cos(1000πt),载波频率为20kHz,请仿真出AM,DSB-SC,SSB信号,观察已调信号的波形和频谱。 1.AM信号: (1)信号的表达式 (3)流程图 AM信号 s= (1+0.3*m).*cos(2*pi*fc*t); 绘制时域波形及频谱 傅氏变换S= t2f(s,fs) (2)源代码 %AM信号的产生 fs= 800; %采样频率KHz T= 200; %截短时间ms N= T*fs; %采样点数 dt= 1/fs; t= [-T/2:dt:T/2-dt]; df= 1/T; f=[-fs/2:df:fs/2-df]; fm= 1; % kHz fc= 20; % kHz m= sin(2*pi*fm*t)+2*cos(1*fm*pi*t); s= (1+0.3*m).*cos(2*pi*fc*t); %AM 信号 S= t2f(s,fs); figure(1) plot(f,abs(S1)) title('AM信号频谱') xlabel('f') ylabel('S(f)') axis([-25,25,0,max(abs(S1))]); %xset('window',2)figure(2) plot(t,s1) title('AM信号波形') xlabel('t') ylabel('s(t)') axis([-3,3,-3,3]); (4)实验结果

精选文库 -3 -2-1 0123 -3-2 -1 1 2 3 AM 信号波形 t(ms) s (t ) -25 -20 -15 -10 -5 05 10 15 20 25 0102030405060708090 100AM 信号频谱 f(kHz) S (f )

微波仿真实验报告(北邮)

北京邮电大学 微波仿真实验报告实验名称:微波仿真实验

姓名:刘梦颉 班级:2011211203 学号:2011210960 班内序号:11 日期:2012年12月20日 一、实验目的 1、熟悉支节匹配的匹配原理。 2、了解微带线的工作原理和实际应用。 3、掌握Smith图解法设计微带线匹配网络。 4、掌握ADS,通过SmithChart和Momentum设计电路并仿真出结果。 二、实验要求 1、使用软件:ADS 2、实验通用参数: FR4基片:介电常数为4.4,厚度为1.6mm,损耗角正切为0.02 特性阻抗:50欧姆 3、根据题目要求完成仿真,每题截取1~3张截图。

三、实验过程及结果 第一、二次实验 实验一: 1、实验内容 Linecal的使用(工作频率1GHz) a)计算FR4基片的50欧姆微带线的宽度 b)计算FR4基片的50欧姆共面波导(CPW)的横截面尺寸(中心信号线 宽度与接地板之间的距离) 2、相关截图 (a)根据实验要求设置相应参数

(b)根据实验要求设置相应参数 实验二 1、实验内容 了解ADS Schematic的使用和设置2、相关截图:

打开ADS软件,新建工程,新建Schematic窗口。 在Schematic中的tools中打开lineCalc,可以计算微带线的参数。 3、实验分析 通过在不同的库中可以找到想要的器件,比如理想传输线和微带线器件。在完成电路图后需要先保存电路图,然后仿真。在仿真弹出的图形窗口中,可以绘制Smith图和S参数曲线图。

实验三 1、实验内容 分别用理想传输线和微带传输线在FR4基片上,仿真一段特性阻抗为50欧姆四分之波长开路线的性能参数,工作频率为1GHz。观察Smith圆图变化。 2、相关截图 (1)理想传输线

北邮《微机原理与接口技术》阶段作业汇总

《微机原理与接口技术》作业汇总 1.若欲使RESET有效,只要A即可。 A.接通电源或按RESET键 2.8086微处理器中的ES是D寄存器 D.附加数据段 3.8086 微处理器中BP 寄存器是A A.基址指针寄存器 4.8086/8088 微处理器中的BX是A A.基址寄存器 5.8086/8088微处理器顺序执行程序时,当遇到C指令时, 指令队列会自动复位,BIU会接着往指令队列中装入新的程序段指令。 C.JCXZ 6.8086微处理器读总线周期中地址信号AD15~AD0在A 期间处于高阻。A.T2 7.8086/8088 微处理器引脚中B信号线能够反映标志寄 存器中断允许标志IF的当前值。 B.S5 8.访问I/O端口可用地址线有B条。B.16 9.8086/8088 微处理器可访问内存储器地址为A A.00000~FFFFFH 10.字符串操作时目标串逻辑地址只能由B提供 B.ES、DI 11.8086/8088微处理器中堆栈段SS作为段基址,则偏移 量为B。 B.SP 12.若有两个带有符号数ABH和FFH相加,其结果使F 中CF和OF位为C。 C.1;0 13.8086微处理器内部通用寄存器中的指针类寄存器是B。 B.BP 14.8086/8088微处理器内部能够计算出访问内存储器的20位物理地址的附加机构是。B.BIU中的地址加法器15.当标志寄存器TF=1时,微处理器内部每执行完一条 指令便自动进行一次B。 B.内部中断 16.8086/8088微处理器内部寄存器中的累加器是A寄存 器。 A.16位数据寄存器 17.8086微处理器中的BIU和EU是处于B的工作状态 B.并行 18.8086中指令队列和堆栈特点分别是C C.先进先出;后进先出 19.微型计算机各部件之间是用A连接起来的。 A.系统总线 20.若把组成计算机中的运算器和控制器集成在一块芯 片上称为C。 C.微处理器 21.相联存储器是指按C进行寻址的存储器。 C.内容指定方式 22.单地址指令中为了完成两个数的算术运算,除地址码 指明的一个操作数外,另一个数常需采用D。 D.隐含寻址方式23.某存储器芯片的存储容量为8K×12位,则它的地址 线为C。 C.13 24.下列8086指令中,格式错误的是C。 C.MOV CS,2000H 25.寄存器间接寻址方式中,操作数处在C。C.主存单元 26.某计算机字长16位,其存储容量为2MB,若按半字 编址,它的寻址范围是C。 C.2M 27.某一RAM 芯片,其容量为1024×8位,其数据线和 地址线分别为C。 C.8,10 28.CPU在执行OUT DX,AL指令时,A寄存器的内容 送到数据总线上。 A.AL 29.计算机的存储器系统是指D。 D.cache,主存储器和外存储器 30.指令MOV AX, [3070H]中源操作数的寻址方式为C C.直接寻址 31.EPROM是指D D.光擦可编程的只读存储器 32.指令的寻址方式有顺序和跳跃两种方式,采用跳跃寻 址方式,可以实现D.程序的条件转移成无条件转移33.8086 CPU对存贮器操作的总线周期的T1状态, AD0~AD15引脚上出现的信号是A。A.地址信号 34.堆栈是按D组织的存储区域。D.先进后出原则 35.8086/8088中源变址寄存器是A。A.SI 36.8086/8088中SP是D寄存器。D.堆栈指针寄存器 37.8086/8088中FR是A寄存器。A.标志寄存器 38.8086/8088中IP是C寄存器。C.指令指针寄存器 39.假设AL寄存器的内容是ASCII码表示的一个英文字 母,若为大写字母,将其转换为小写字母,否则不变。 试问,下面哪一条指令可以实现此功能A。 A.ADD AL, 20H 40.逻辑右移指令执行的操作是A。 A.符号位填0,并 顺次右移1位,最低位移至进位标志位 41.假设数据段定义如下: DSEG SEGMENT DAT DW 1,2,3,4,5,6,7,8,9,10 CNT EQU ($-DA T)/2 DSEG ENDS 执行指令MOV CX,CNT后,寄存器CX的内 容是D D.4 42.在下列段寄存器中,代码寄存器是B。B.CS 43.在执行POP[BX]指令,寻找目的操作数时,段地 址和偏移地址分别是B。 B.在DS和BX中 44.设DS=5788H,偏移地址为94H,该字节的物理地址 是B。B.57914H

北邮-通原软件实验报告-16QAM

实验一: 16QAM调制与解调 一、实验目的 1、熟悉16QAM信号的调制与解调,掌握SYSTEMVIEW软件中,观察眼图与星座图的方 法。 2、强化SYSTEMVIEW软件的使用,增强对通信系统的理解。 二、实验原理 1、16QAM 16QAM是指包含16种符号的QAM调制方式。 16QAM 调制原理方框图: 图一16QAM调制框图 16QAM解调原理方框图: 图二16QAM解调框图 16QAM 是用两路独立的正交 4ASK 信号叠加而成,4ASK 是用多电平信号去键控载波而得到的信号。它是 2ASK 体制的推广,和 2ASK 相比,这种体制的优点在于信息传

输速率高。 正交幅度调制是利用多进制振幅键控(MASK)和正交载波调制相结合产生的。 16 进制的正交振幅调制是一种振幅相位联合键控信号。16QAM 的产生有 2 种方法: (1)正交调幅法,它是有 2 路正交的四电平振幅键控信号叠加而成; (2)复合相移法:它是用 2 路独立的四相位移相键控信号叠加而成。 在这里我们使用第一种方法。 16QAM信号的星座图: 图三16QAM星座图 上图是16QAM的星座图,图中f1(t)和f2(t)是归一化的正交基函数。各星座点等概出现。 星座图中最近的距离与解调误码率有很密切的关系。上图中的最小距离是dmin=2。 16QAM的每个星座点对应4个比特。哪个星座点代表哪4比特,叫做星座的比特映射。通常采用格雷映射,其规则是:相邻的星座点只差一个比特。 实验所需模块连接图如下所示: 图四模块连接图 各个模块参数设置:

三、实验步骤 (1)按照实验所需模块连接图,连接各个模块 (2)设置各个模块的参数: ①信号源部分:PN序列发生器产生双极性NRZ序列,频率10HZ 图五信号源设置示意图 ②载频:频率设置为100Hz。

北京邮电大学微机原理硬件实验报告

北京邮电大学微机原理硬件实验报告

实验报告一:I/0地址译码和简单并行接口 ——实验一&实验二 一、实验目的 掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。 二、实验原理及内容 a) I/0地址译码 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数 字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~ 287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔经过软件延时实现。 2、接线: Y4/IO地址接 CLK/D触发器

Y5/IO地址接 CD/D触发器 D/D触发器接 SD/D触发器接 +5V Q/D触发器接L7(LED灯)或逻辑笔 b) 简单并行接口 1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通 用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器, 8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电 路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码经过这 个输出接口输出,根据8个发光二极管发光情况验证正确 性。 3、按下面图4-2-2简单并行输入接口电路图连接电路 (74LS244插通用插座,74LS32用实验台上的“或门”)。 74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关 输出K0~K7,8个数据输出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这 个ASCⅡ码,并将其对应字母在屏幕上显示出来。 5、接线:1)输出 按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验 台逻辑或门) 2)输入 按图4-2-2接线(图中虚线为实验所需接线,74LS32为实 验台逻辑或门) 三、硬件连线图 1、I/O地址译码

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

北邮微机原理软件实验报告

微机原理软件实验报告

实验二分支,循环程序设计 一、预习题: 1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来? 答:要屏显0-9的数码,可以调用02h中断,然后将要显示的数码的ASCII码存进DL 里,然后执行INT 21H就可以打印字符。当然,若不只一个数,调用09h中断(显示字符串)更好,但要将DS:DXZ指向要显示的数字在内存中的首地址,并要求以$结束。 2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法? 答:CMP X,0 检验标志位CF CF=1,X为负数 CF=0接着检验ZF:ZF=1,X为零,ZF=0,X为正数 二、实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS 功能调用. 三、实验内容: 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9. 2.编写一个程序统计数据区中正数,负数和零的个数. 四、实验源代码 assume cs:code,ds:data data segment buff db 1,2,3,4,5,-1,-2,-3,0,0 ;安排的数据区 string db '>0:' plus db 0 ;用变量plus来存储正数的个数 db 0ah,0dh string1 db '=0:' zero db 0 ;用变量zero来存储零的个数 db 0ah,0dh string2 db '<0:' minus db 0 ;用变量minus来存储负数的个数 db '$' data ends code segment start:movax,data movds,ax mov cx,10 ;初始化,并将CX赋为10,因为共有10个数 mov dx,0 ;将计数器dx,ah初始化为0 mov ah,0 lea bx,buff compare:cmp byte ptr [bx],0 ;取出一个数与0进行比较 jgeplu ;大于等于0,跳至plu执行 inc ah ;小于0,用ah暂存小于0的个数,ah+1 jmp next ;比完后进行下一个数的比较

北邮通信原理软件实验报告

通信原理软件实验报告 学院:信息与通信工程学院班级:

一、通信原理Matlab仿真实验 实验八 一、实验内容 假设基带信号为m(t)=sin(2000*pi*t)+2cos(1000*pi*t),载波频率为20kHz,请仿真出AM、DSB-SC、SSB信号,观察已调信号的波形和频谱。 二、实验原理 1、具有离散大载波的双边带幅度调制信号AM 该幅度调制是由DSB-SC AM信号加上离散的大载波分量得到,其表达式及时间波形图为: 应当注意的是,m(t)的绝对值必须小于等于1,否则会出现下图的过调制: AM信号的频谱特性如下图所示: 由图可以发现,AM信号的频谱是双边带抑制载波调幅信号的频谱加上离散的大载波分量。

2、双边带抑制载波调幅(DSB—SC AM)信号的产生 双边带抑制载波调幅信号s(t)是利用均值为0的模拟基带信号m(t)和正弦载波c(t)相乘得到,如图所示: m(t)和正弦载波s(t)的信号波形如图所示: 若调制信号m(t)是确定的,其相应的傅立叶频谱为M(f),载波信号c(t)的傅立叶频谱是C(f),调制信号s(t)的傅立叶频谱S(f)由M(f)和C(f)相卷积得到,因此经过调制之后,基带信号的频谱被搬移到了载频fc处,若模拟基带信号带宽为W,则调制信号带宽为2W,并且频谱中不含有离散的载频分量,只是由于模拟基带信号的频谱成分中不含离散的直流分量。 3、单边带条幅SSB信号 双边带抑制载波调幅信号要求信道带宽B=2W, 其中W是模拟基带信号带宽。从信息论关点开看,此双边带是有剩余度的,因而只要利用双边带中的任一边带来传输,仍能在接收机解调出原基带信号,这样可减少传送已调信号的信道带宽。 单边带条幅SSB AM信号的其表达式: 或 其频谱图为:

北邮电磁场与微波实验天线部分实验报告二

北邮电磁场与微波实验天线部分实验报告二

信息与通信工程学院电磁场与微波实验报告

实验二网络分析仪测试八木天线方向图 一、实验目的 1.掌握网络分析仪辅助测试方法; 2.学习测量八木天线方向图方法; 3.研究在不同频率下的八木天线方向图特性。 注:重点观察不同频率下的方向图形状,如:主瓣、副瓣、后瓣、零点、前后比等; 二、实验步骤: (1) 调整分析仪到轨迹(方向图)模式; (2) 调整云台起点位置270°; (3) 寻找归一化点(最大值点); (4) 旋转云台一周并读取图形参数; (5) 坐标变换、变换频率(f600Mhz、900MHz、1200MHz),分析八木天线方向图特性; 三、实验测量图 不同频率下的测量图如下: 600MHz:

900MHz:

1200MHz:

四、结果分析 在实验中,分别对八木天线在600MHz、900MHz、1200MHz频率下的辐射圆图进行了测量,发现频率是900MHz的时候效果是最好的,圆图边沿的毛刺比较少,方向性比较好,主瓣的面积比较大。 当频率为600 MHz的时候,圆图四周的毛刺现象比较严重,当频率上升到1200MHz时,辐射圆图开始变得不规则,在某些角度时出现了很大的衰减,由对称转向了非对称,圆图边缘的毛刺现象就非常明显了,甚至在某些角度下衰减到了最小值。 从整体来看,八木天线由于测量的是无线信号,因此受周围环境的影响还是比较大的,因此在测量的时候周围的人应该避免走动,以减小对天线电磁波的反射从而减小测量带来的误差使得圆图更接近真实情况。 由实验结果分析可知:最大辐射方向基本在90°和270°这条直线上,图中旁瓣均较小,及大部分能量集中在主瓣。 八木天线由于测量的是无线信号,因此受周围环境的影响还是比较大的,因此在测量的时候应当尽量保持周边环境参数一定,以减小对天线电磁波的反射从而减小测量带来的误差使得圆图更接近真实情况。 五、实验总结

北邮微原软件实验报告

2013年微机原理软件实验报告 学院:信息与通信工程学院 班级:2011211104 姓名:

实验二分支,循环程序设计 一.实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS 功能调用 二.实验内容: 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9. 2.编写一个程序统计数据区中正数,负数和零的个数. 3.将统计结果在屏幕上显示. 三.预习题 1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来? 0-9的ACSII码为,30h,31h,32h,34h,35h,36h,37h,38h,39h, 将要显示的数加上30h,得到该数的ACSII码,再利用DOS功能调用显示单个字符 2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法? 利用cmp指令,利用TEST指令,将该数与0相与,将该数与0相减,观察标志位。

四.程序流程图

五.源程序 DATA SEGMENT ;数据段 NUM DB 1,2,-2,3,-3,5,2,4,-6,-11,100,0,0,34,-55,-33,0 ;待处理数据COUNT EQU $-NUM ;数据个数 MINUS DB 0 ;小于零的个数 ZERO DB 0 ;等于零的个数 PLUS DB 0 ;大于零的个数 RESULT DB 'NEGNUM=',?,0AH,0DH,'ZERONUM=',?,0AH,0DH,'POSNUM=',?,0AH,0DH,'$' ;结果显示字符串 DATA ENDS STACK SEGMENT STACK 'STACK' ;堆栈段 DW 50 DUP(?) STACK ENDS CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV SI,OFFSET NUM AGAIN: MOV AL,[SI] ;循环比较 CMP AL,0 JGE NEXT1 INC MINUS JMP DONE NEXT1: JZ NEXT2 INC PLUS JMP DONE NEXT2: INC ZERO DONE: INC SI LOOP AGAIN ;返回结果 MOV DI,OFFSET RESULT MOV AL,MINUS ADD AL,30H MOV BYTE PTR[DI+7],AL MOV AL,ZERO ADD AL,30H MOV BYTE PTR[DI+18],AL MOV AL,PLUS ADD AL,30H MOV BYTE PTR[DI+28],AL

北邮—微机原理与接口技术(1)

微机原理与接口技术硬件实验报告

目录 1.实验一微机实验平台介绍及IO的使用 (3) 1.1.实验目的 (3) 1.2.实验内容及要求 (3) 1.3.实验环境及背景 (3) 1.4.实验步骤 (4) 1.4.1.使用debug的I、O命令读写端口 (4) 1.4.2.使用文本编辑器edit和编译器masm (5) 1.5.思考题 (11) 1.6.心得体会 (11) 参考资料 (12) 声明与致谢 (12)

1.实验一微机实验平台介绍及IO的使用 1.1.实验目的 1.1.1通过实验了解和熟悉实验台的结构,功能及使用方法; 1.1.2通过实验掌握直接使用debug的I、O命令来读写IO端口; 1.1.3学会debug的使用及编写汇编程序。 1.2.实验内容及要求 1.2.1学习使用debug命令,并用I、O命令直接对端口进行读写操作, 1.2.2用汇编语言编写跑马灯程序。(可以使用EDIT编辑工具。)要求实现以下两个功能:A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等);B.通过输出端口控制灯的工作状态(低电平灯亮)。 1.2.3使用时要注意,电源打开时不得插拔电缆及各种器件,一定要在断电的情况下连接电路,否则可能会烧坏整个实验系统。 1.3.实验环境及背景 我们使用PCI_IDE50扁平电缆将PC机与实验扩展模块连接起来。在扩展实验平台上,有八个发光二极管、八个拨码开关。读取拨码开关和写发光二极管的端口地址已经被做成了0E8E0h。连接的PC机上安装有DOS操作系统,并有MASM5开发工具。

图1扩展实验模块 1.4.实验步骤 1.4.1.使用debug的I、O命令读写端口 进入DOS,在命令行模式下输入命令debug,用-a选项写入下列程序:CODE (debug mode) MOV DX, E8E0 MOV AL, FE OUT DX, AL MOV AH, 0B INT 21 OR AL, AL JZ 0100 INT 20 输入结束后,直接输入回车即可推出-a。然后,用-g选项运行程序,查看结果。发现最右边的LED亮,其他不亮。修改输出内容,再运行查看结果,可以发现:当输出位对应为1时,灯灭;输出为0时,灯亮。 下面,我们来分析一下以下这段程序的作用。

微原软件实验报告

微机原理与接口技术软件实验 一、实验目的 1.掌握汇编程序的编辑,编译,连接和执行的全过程; 2.学习和掌握用DEBUG调试程序的方法. 二、源程序 DAT SEGMENT A D B 4 ;(自定) B DB 5 ;(自定) Y DB 3 DUP(0) Z DB 0,0 DAT ENDS STA SEGMENT STACK DW 50 DUP(?) STA ENDS COD SEGMENT ASSUME CS:COD,DS:DAT STAR PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AL,A MOV Z,AL MOV Z+1,AL CALL SUB1 ;A*A

MOV AL,B MOV Z,AL MOV Z+1,AL CALL SUB1 ;B*B MOV AL,A MOV Z,AL MOV AL,B MOV Z+1,AL ;Z stores the two OPRD temporally CALL SUB1 ;A*B ADD WORD PTR Y,AX ADC BYTE PTR[Y+2],0 ;A*B*2 RET STAR ENDP SUB1 PROC MOV AL,Z MOV AH,Z+1 MUL AH ADD WORD PTR Y,AX ;Y stores the result ADC BYTE PTR[Y+2],0 ;Y+2 stores the signal flag RET SUB1 ENDP COD ENDS END STAR 三、实验文档中的要求 (1)用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址.

相关文档