当前位置:文档之家› 北京理工大学微机原理总汇编语言上机实验题

北京理工大学微机原理总汇编语言上机实验题

实验一

请在数据段中定义两个数,要求编写程序分别计算出这两个数的和、差、积、商,并用Debug 的相关命令查询计算结果。

(略)

实验二

内存自TABLE开始的连续16个单元中存放着0-15的平方值,查表求DATA中任意数X(0≤X ≤15)的平方值,并将结果放在RESULT中。

DATA1 SEGMENT

TABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225

DATA DB 10

RESULT DB ?

DATA1 ENDS

STAC SEGMENT

DB 100 DUP (?)

STAC ENDS

CODE SEGMENT

ASSUME DS:DATA1,SS:STAC,CS:CODE

SR:MOV AX,DATA1

MOV DS,AX

MOV AX,STAC

MOV SS,AX

LEA BX,TABLE

MOV AH,0

MOV AL,DATA

XLAT

MOV RESULT,AL

MOV AH,4CH

INT 21H

CODE ENDS

END SR

实验三

试编写一程序:比较两个字符串STRING1 和STRING2所含的字符是否相同。若相同则显示‘MATCH’,否则显示‘NO MATCH’。

DATA1 SEGMENT

STRING1 DB 10,?,10 DUP (?)

STRING2 DB 10,?,10 DUP (?)

REM1 DB 'PLEASE INPUT STR1: $'

REM2 DB 'PLEASE INPUT STR2: $'

MESS1 DB 'MATCH$'

MESS2 DB 'NO MATCH$'

DATA1 ENDS

CODE1 SEGMENT

ASSUME CS:CODE1,DS:DATA1

STT: MOV AX,DATA1

MOV DS,AX

MOV ES,AX LEA DX,REM1 MOV AH,09H INT 21H

LEA DX, STRING1 MOV AH, 0AH INT 21H

MOV DL, 0DH MOV AH, 6

INT 21H

MOV DL, 0AH MOV AH, 6

INT 21H

LEA DX,REM2 MOV AH,09H INT 21H

LEA DX, STRING2 MOV AH, 0AH INT 21H

MOV DL,0DH MOV AH,6

INT 21H

MOV DL,0AH

MOV AH,6

INT 21H

LEA SI, STRING1

LEA DI,STRING2

MOV CL,[SI+1]

MOV BL,[DI+1]

CMP CL,BL

JNE NOM

CLD

MOV CH,0

ADD CL,2

REPZ CMPSB

JNZ NOM MAT: LEA DX,MESS1

JMP SHORT DISP1 NOM: LEA DX,MESS2

DISP1: MOV AH,09H

INT 21H

MOV AH,4CH

INT 21H

CODE1 ENDS

END STT

实验四

设有10个学生的成绩分别为:56,69,84,82,73,88,99,63,100,80分。试编写程序分别统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并将各分数段的人数在屏幕上显示出来。

DATA SEGMENT

SCORE DB 56,69,84,82,73,88,99,63,100,80

NUM_UNDER60 DB 0

NUM_60TO69 DB 0

NUM_70TO79 DB 0

NUM_80TO89 DB 0

NUM_90TO99 DB 0

NUM_100 DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

XOR AX,AX

MOV CX,10

LEA BX,SCORE

COMPARE:

CMP BYTE PTR [BX],60 JL UNDER60

JMP IS60TO69

IS60TO69:

CMP BYTE PTR [BX],70 JL _60TO69

JMP IS70TO79

IS70TO79:

CMP BYTE PTR [BX],80 JL _70TO79

JMP IS80TO89

IS80TO89:

CMP BYTE PTR [BX],90 JL _80TO89

JMP IS90TO99

IS90TO99:

CMP BYTE PTR [BX],100 JL _90TO99

JZ EQUAL100

UNDER60:

ADD NUM_UNDER60,1 JMP CON

_60TO69:

ADD NUM_60TO69,1 JMP CON

_70TO79:

ADD NUM_70TO79,1 JMP CON

_80TO89:

ADD NUM_80TO89,1 JMP CON

_90TO99:

ADD NUM_90TO99,1 JMP CON

EQUAL100:

ADD NUM_100,1 CON:

LEA BX,[BX+1]

LOOP COMPARE

LAST:

MOV DL,NUM_UNDER60 ADD DL,30H

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

MOV DL,NUM_60TO69 ADD DL,30H

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

MOV DL,NUM_70TO79 ADD DL,30H

MOV AH,2

INT 21H

MOV AH,2

INT 21H

MOV DL,NUM_80TO89 ADD DL,30H

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

MOV DL,NUM_90TO99 ADD DL,30H

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

MOV DL,NUM_100 ADD DL,30H

MOV AH,2

INT 21H

MOV AH,4CH

CODE ENDS

END START

实验5

设有10个学生的成绩分别为88.75.95.63.98.78.87.73.90.60

编写程序分别排出他们的名次,并分别存放在后续的10个单元中DATA SEGMENT

SCORE DB 88,75,95,63,98,78,87,73,90,60

ORDER DB 10 DUP(?)

DISPLAY DB '$'

DATA ENDS

STACK SEGMENT

DB 100 DUP(?)

STACK 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 DI,ORDER

LEA BX,SCORE MOV DX,10

L2:

MOV AL,[BX]

LEA SI,SCORE MOV CX,10

MOV BYTE PTR[DI],1 L1:

CMP AL,[SI]

JNC TT

L:INC BYTE PTR[DI] TT:INC SI

LOOP L1

INC BX

INC DI

DEC DX

MOV CX,10 LEA DX,DISPLAY MOV AH,9

INT 21H

LEA SI,ORDER L3:

MOV AL,[SI] CMP AL,10 JAE TEN MOV DL,[SI] ADD DL,30H MOV AH,2

INT 21H

JMP DOU TEN:

DAA

PUSH AX PUSH CX MOV CL,4 SHR AL,CL

ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX AND AL,0FH ADD AL,30H MOV DL,AL MOV AH,2 INT 21H

DOU:

INC SI

CMP CX,1

JZ F

MOV DL,',' MOV AH,2 INT 21H LOOP L3

F:

MOV AH,4CH

INT 21H

CODE ENDS

END START

实验六

编写程序:要求完成从键盘输入字符,若输入的是数字N,则响铃N次。如输入不是数字,则不响铃。

DATA SEGMENT

NUM DB ?

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START: MOV AX,DATA

MOV DS,AX

MOV AH,1

INT 21H

XOR CX,CX

CMP AL,30H

JL L1

CMP AL,3AH

JGE L1

SUB AL,30H

MOV CL,AL

RING: MOV DL,07H

MOV AH,2

INT 21H

CALL DELAY

LOOP RING

DELAY PROC

DLAY: PUSH CX

MOV BX,0FFFFH LP2: MOV CX,176H

LP1: PUSHF

POPF

LOOP LP1

DEC BX

JNZ LP2

POP CX

RET

DELAY ENDP

L1: MOV AH,4CH

INT 21H

CODE ENDS

CODE ENDS

END START

实验七

子程序调用:

从键盘输入字符串(包括数字,大写字母,小写字母,标点符号),要求调用子程序将其中的小写字母转换成大写字母,然后将结果输出。

DATA SEGMENT

BUF DB 100,?,100 DUP(?)

CR DB 13,10,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA DX,BUF

MOV AH,0AH

INT 21H

MOV DL,0DH

MOV AH,6

INT 21H

MOV DL,0AH

MOV AH,6

INT 21H

XOR BX,BX

LEA SI,BUF+2

XOR CX,CX

MOV CL,BUF+1 L1: MOV DL,[SI]

CMP DL,'a'

JB N

CMP DL,'z'

JA N

CALL CHANGE N:

MOV AH,02H

INT 21H

INC SI

LOOP L1

JMP LAST CHANGE PROC PUSH CX

SUB DL,20H

POP CX

RET

CHANGE ENDP LAST: LEA DX,CR

MOV AH,9

INT 21H

MOV AH,4CH

INT 21H CODE ENDS

END START

北京理工大学微机原理总汇编语言上机实验题

实验一 请在数据段中定义两个数,要求编写程序分别计算出这两个数的和、差、积、商,并用Debug 的相关命令查询计算结果。 (略) 实验二 内存自TABLE开始的连续16个单元中存放着0-15的平方值,查表求DATA中任意数X(0≤X ≤15)的平方值,并将结果放在RESULT中。 DATA1 SEGMENT TABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 DATA DB 10 RESULT DB ? DATA1 ENDS STAC SEGMENT DB 100 DUP (?) STAC ENDS CODE SEGMENT ASSUME DS:DATA1,SS:STAC,CS:CODE SR:MOV AX,DATA1 MOV DS,AX MOV AX,STAC MOV SS,AX LEA BX,TABLE

MOV AH,0 MOV AL,DATA XLAT MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS END SR 实验三 试编写一程序:比较两个字符串STRING1 和STRING2所含的字符是否相同。若相同则显示‘MATCH’,否则显示‘NO MATCH’。 DATA1 SEGMENT STRING1 DB 10,?,10 DUP (?) STRING2 DB 10,?,10 DUP (?) REM1 DB 'PLEASE INPUT STR1: $' REM2 DB 'PLEASE INPUT STR2: $' MESS1 DB 'MATCH$' MESS2 DB 'NO MATCH$' DATA1 ENDS CODE1 SEGMENT ASSUME CS:CODE1,DS:DATA1 STT: MOV AX,DATA1

微机原理与汇编语言实验循环程序设计实验

微机原理与汇编语言 实验报告 姓名x x x学号xxxxxx 专业班级计科x班 课程名称微机原理与汇编语言实验日期2014.10.22 实验名称循环程序设计实验成绩 一、实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 二、实验内容 1、实验原理 (1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题 (2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数 2、实验步骤 (1)流程图 (2)实验源码 .model small .stack ;定义堆栈段 .data ;定义数据段 inf1 db "Please input a number(1-627):$" inf2 db 0ah, 0dh, "1+2+......+$" ibuf db 7, 0, 6 dup(0) obuf db 6 dup(0) .code start: mov ax, @data mov ds, ax mov dx, offset inf1 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax 中 mov ah, 09h int 21h mov dx, offset ibuf mov ah, 0Ah int 21h mov cl, ibuf+1 mov ch, 0 mov si, offset ibuf+2 mov ax, 0 loop1: mov dx, 10 mul dx and byte ptr [si], 0Fh add al, [si] 从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中 开始 结束 素、、 (CX)-1=0 累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和) BX送1(BX存放每次循环累加的数,每循环一次,BX值加1) ADD AX,BX INC BX 累加和(在AX中)转换为十进制数并 显示 Y N

《微机原理及汇编语言》习题

第一章思考题与习题 1.1计算机的发展到目前为止经历了几个时代?每个时代的特点是什么? 1.2计算机的特点表现在哪些方面?简述计算机的应用领域。 1.3冯·诺依曼型计算机的结构由哪些部分组成?各部分的功能是什么?分析其中数据信息 和控制信息的流向。 1.4计算机中的CPU由哪些部件组成?简述各部分的功能。 1.5微型计算机系统主要由哪些部分组成?各部分的主要功能和特点是什么? 1.6微型计算机的分类方法有哪些? 1.7 什么是微型计算机的系统总线?定性说明微处理器三大总线的作用。 1.8 微型计算机的总线标准有哪些?怎样合理地加以选择? 1.9 简述微型计算机的主要应用方向及其应用特点。 1.10 奔腾系列微处理器有哪些特点?与其它微处理器相比有哪些改进? 1.11 解释并区别下列名词术语的含义。 (1)微处理器、微计算机、微计算机系统 (2)字节、字、字长、主频、访存空间、基本指令执行时间、指令数 (3)硬件和软件 (4)RAM和ROM (5)机器语言、汇编语言、高级语言、操作系统、语言处理程序、应用软件 (6)CMOS、BIOS、Cache芯片 1.12 微型计算机系统软件的主要特点是什么?它包括哪些内容? 1.12 定性比较微型计算机的内存储器和外存储器的特点及组成情况。 第二章思考题与习题 2.1 简述计算机中“数”和“码”的区别,计算机中常用的数制和码制有哪些? 2.2 将下列十进制数分别转化为二进制数、八进制数、十六进制数和压缩BCD数。 (1)125.74 (2)513.85 (3)742.24 (4)69.357 (5)158.625 (6)781.697 2.3 将下列二进制数分别转化为十进制数、八进制数和十六进制数。 (1)101011.101 (2)110110.1101 (3)1001.11001 (4)100111.0101 2.4 将下列十六进制数分别转化为二进制数、八进制数、十进制数和压缩BCD数。 (1)5A.26 (2)143.B5 (3)6AB.24 (4)E2F3.2C 2.5 根据ASCII码的表示,查表写出下列字符的ASCII码。 (1)0 (2)9 (3)K (4)G (5)t (6)DEL (7)ACK (8)CR (9)$(10)< 2.6 写出下列十进制数的原码、反码、补码表示(采用八位二进制,最高位为符号位)。 (1)140 (2)52 (3)-26 (4)-127 2.7 已知补码求出其真值。 (1)48H (2)9DH (3)B2H (4)4C10H 2.8 已知某个8位的机器数65H,在其作为无符号数、补码带符号数、BCD码以及ASCII码时分别表示

微机原理---汇编语言习题(完整参考答案)

MIS 硬件原理复习内容 1.数的不同进制转换,原码、反码、补码转码,BCD码 2.掌握D触发器逻辑 3.D触发器组成的电路:卡诺图及简化、真值表、波形图、状态转换图 4.三态门、总线结构 5.存储器扩展方法:地址总线的作用,内存分页技术,地址译码方法,译码器 6.86X 系列CPU 结构框图 7.8086寄存器组,寻址方式 8.指令,伪指令 9.数据定义,完整程序结构 10.汇编语言上机及调试过程 1.分别指出下列指令中的源操作数和目的操作数的寻址方式: (1)MOV SI, 200 (2)MOV CX, DA TA[SI] (3)ADD AX, [BX][DI] (4)AND AX, BX (5)PUSHF 2.指出指令MOV AX, 2010H 和MOV AX, DS:[2010H]的区别 3.写出以下指令中内存操作数的所在地址 (1)MOV AL, [BX+5] (2)MOV [BP+5], 5 (3)INC BYTE PTR[SI+3] (4)MOV DL, ES:[BX+DI] (5)MOV BX, [BX+SI+2] 4.判断下列指令书写是否正确 (1)MOV DS, 0100H (错) (2)MOV AL, BX (错) (3)MOV BL, F5H (错) (4)MOV DX, 2000H (对) (5)INC [BX] (对) (6)MOV 5, AL (错) (7)MOV [BX], [SI] (错) (8)PUSH CS (对) (9)POP CS (错) 5.若SP=2000H, AX=3355H, BX=4466H, 试指出执行下列指令后有关寄存器的 值: (1)PUSH AX;执行后AX=? SP=? (AX=3355H SP=1FFEH) (2)PUSH AX

微机原理实验

实验1-3 汇编语言实验 一、实验目的 熟悉汇编语言语法 熟悉8086常用指令 掌握BIOS中断调用及DOS功能调用 二、实验内容 1、编写一个汇编语言程序,要求从键盘输入一个小写字母,将其转化成大写字母并在屏幕上显示出来。 2、编写一个汇编语言程序,将字符串“Assembly Language Programming”全部转化为大写字母,存放到原来所在单元。 3、从键盘接收一串字符,并另起一行逆序显示该字符串。 三、实验步骤 1. 题目1的完整汇编语言程序如下,在实验环境中保存文件进行编译连接后,在DOS中运行文件,可实现将输入字母转换成小写输出。 DATA SEGMENT ;定义数据段 BUF DB 0DH,0AH,'PLEASE INPUT A CHAR:$' DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK ;段寄存器指派伪指令 BEGIN: MOV AX,DATA MOV DS,AX ;初始化DS LEA DX,BUF;偏移地址送寄存器 MOV AH,9 INT 21H;9号调用显示字符串PLEASE INPUT A CHAR: MOV AH,1;1号调用,从键盘接收一个字符

INT 21H CMP AL,61H;若比“a”小转PEND处执行 JB PEND CMP AL,7AH ;若比“z”大转PEND JA PEND SUB AL,20H ;若在“a”和“z”之间,则减去20变为大写字母 MOV DL,AL ;转换后的字符存入DL寄存器 MOV AH,2 ;2号功能调用显示一个字符 INT 21H PEND: MOV AH,4CH ;程序结束,返回DOS INT 21H CODE ENDS END BEGIN 2. 题目2的完整汇编语言程序如下,运行可执行文件后将字符串“Assembly Language Programming”转换成大写“ASSEMBLY LANGUAGE PROGRAMMING”并显示。 DATA SEGMENT ;定义数据段 BUF DB 0DH,0AH,'Assembly Language Programming$' N DB $-BUF ;字符串长度 DATA ENDS CODE SEGMENT ;定义代码段 ASSUME DS:DATA,CS:CODE ;段寄存器指派伪指令 BEGIN: MOV AX,DATA MOV DS,AX ;数据初始化 LEA DX,BUF MOV AH,9 ;9号调用显示字符串Assembly language Programming INT 21H

汇编语言实验题目(讲解)

一微机原理与接口技术汇编题目 (1)数据块传送 1、将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。 2、将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。 提示: 1、指定数据的起始地址:(如果不指定起始地址,则起始地址为0000H) DA TA SEGMENT ORG 2000H DB 1,,2,3,4,5,6,7,8,9,10 ; DB定义字节数据 ORG 3000H DB 10 DUP(0); 预留10个单元存放结果,初值预定义为0 DA TA ENDS 定义的内存单元为: 2009H

2、定义字数据命令为:DW DA TA1 SEGMENT DW 1,,2,3,4,5,6,7,8,9,10 ; DW定义字数据DA TA1 ENDS 一个字为两个字节,在内存中低位在前,高位在后。

(2)查表 1、已知0~15的平方值表,查表求X(X是0到15 间任一数)的平方值,送到Y单元,用两种方法。 2、已知0~255的平方值表,查表求X的平方值,送到Y单元。 提示: 0到15的平方表,每个平方值为一个字节; 0到255的平方表,每个平方值为2个字节;调试程序,平方表中的数据定义几个就行,目的是程序正确即可。 一个字为两个字节,在内存中低位在前,高位在后。

(3)计算 1、计算多字节数据1122334455667788H与99AABBCCDDEEFF00H的和。 2、计算8字节的BCD码十进制数1122334455667788H与9988776655443322H的和 3、计算10个字数据的和(数据自己定义)。 提示; 1、多字节数据在内存中存放,低位在前,高位在后 DA T1 DB 88H,77H,66H,55H,44H,33H,22H,11H DA T2 DB 00H,0FFH,0EEH,0DDH,0CCH,0BBH,0AAH,99H DA T3 DB 9 DUP(0) 2、BCD十进制加法 二进制加法指令: ADD BCD十进制加法: ADD

微机原理与汇编语言程序设计实验一

实验一汇编语言上机环境及基本操作 一、实验目的及要求 1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。 2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。 3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 二、实验内容 1.汇编语言源程序的建立 本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。设定源程序的文件名为ABC。 DATA SEGMENT BUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUF DATA ENDS STACK SEGMENT STACK ’STACK’ STA DB 10 DUP(?) TOP EQU $-STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,CN DEC CX MOV AL,[BX] INC BX LP: CMP AL,[BX] JBE NEXT MOV AL,[BX] NEXT: INC BX DEC CX JNZ LP MOV AH,4CH INT 21H CODE ENDS END START 键入以下命令:

C:\>EDIT ABC.ASM 此时屏幕的显示状态如图1所示。 图1 用EDIT编辑ABC.AS M程序窗口 程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。 2.将源程序文件汇编成目标程序文件 一般情况下,MASM汇编程序的主要功能有以下3点: (1)检查源程序中存在的语法错误,并给出错误信息。 (2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。 (3)若程序中使用了宏指令,则汇编程序将展开宏指令。 源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。 图2 MASM宏汇编程序工作窗口 汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。其中警告错误是

汇编语言上机题

汇编语言上机考试题 1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。 4试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。 5 编写程序,将一个包含有16个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来(以一位十六进制数形式显示)。 6 试编写一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中。 7 试编写一个汇编语言程序,要求从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数。 8设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数

9 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。 10 在STRING到STRING+99单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字’0’-’9’,如有则把CL的第5位置1,否则将该位置0。 11在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把出现次数最多的数及其出现次数分别存放于AX和CX中。 12 数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。 13 在首地址为DATA的字数组中存放着100H个16位补码数,试编写一个程序求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。 14 把0~100D之间的30个数存入以GRADE为首地址的30字数组中,GRADE+i表示学号为i+1的学生的成绩。另一个数组RANK为30个学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。编写一程序,根据GRADE中的学生成绩,将学生名次填入RANK数组中。(提示:一个学生的名次等于成绩高于这个学生的人数加1。) 15 已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一程序把既在A中又在B中出现的整数存放于数组C中。

北京理工大学-微机原理综合设计实验-数字电压表A

北京理工大学-微机原理综合设计实验-数字电压表A

————————————————————————————————作者:————————————————————————————————日期:

微机原理与接口技术 实验报告 实验内容:微机原理综合设计实 验 数字电压表A 组别:31 姓名:12届黄大师

班级:xxxxxxxxx 学号:xxxxxxxxxx

一、实验目的 1、掌握8255的使用及编程原理。 2、掌握8253定时/计数器的编程原理。 3、掌握ADC0809的使用方法。 4、掌握共阴极七段数码管的工作原理。 5、加强多芯片的综合运用。 6、加强汇编语言程序设计。 二、实验内容 利用ADC0809采集电位器的电压值,将采集的电压值通过8255显示在七段数码管上,显示数据保留小数点后2位,利用8253定时数据更新,每隔0.5秒数据更新一次。扩展要求:具有设置报警阈值功能,当超过阈值时,点亮一个LED灯。 三、实验方法 1、设计思路 先利用ADC0809采集电位器的电压值,此时的电压值在AL中,但其真正的值应该为5/255*AL伏。 根据要求保留小数点后2位,利用程序先将AL乘以500/255,约为196,即将电压值扩大100倍,先除以100,得到最高位,再依次除以10,得到小数点后第一,二位,分别存在连续的三个存储单元中。定义0-9共阴极七段数码管的显示码数据段,再通过8255 依次选通3个数码管,通过8255依次送入刚才所得的三个值的显示码。利用8253工作在方式二,每隔0.5秒产生一低脉冲送到8255,利用程序检验,每隔0.5秒才调用电压采集程序。对于扩展要求可利用74LS273实现。实验简单主要原理图如下: 将可变电位器AN0与ADC0809的ADIN0相连,将CS2与ADC0809的片选CS0809端相连,将ADC0809

实验二 汇编语言程序上机过程及调试

实验报告二 课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名 实验日期:2014 年 3 月10 日报告退发(订正、重做) 一、实验目的 学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。 二、实验内容 1、学习使用全屏幕文本编辑软件EDIT。用EDIT输入一段给定的源程序。 2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到 EDIT进行修改。 3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE) 4、在DOS提示符下运行该可执行文件。 [汇编语言程序的编写格式] 汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。段的定义有两种格式,分述如 下: 1,完整的段定义格式: 一个段由段头,段体,段尾组成,形式如下: 段名SEGMENT[定位类型][组合类型][‘类别’] … … 段名ENDS 其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。 2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下: DOSSEG .MODEL 存储类型;“存储类型”可选择为SMALL。 .STACK[大小];堆栈段,“大小”指定堆栈的字节数。 .DATA;数据段。 .CODE[名字];代码段;一般只有一个代码段,名字可缺少 … … 例1:用完整的段定义编写一源程序。 NAME EXAM1;可以省略 DATA SEGMENT;定义数据段,以下是数据段的内容 STR1 DB “HELLO,WELCOME!”,13,10,‘$’ STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’

《微机原理实验》考试题及答案

1 题目:编程将(AX )=2387、(BX )=192FH 、(CX )=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 CODE SEGMENT ASSUME CS:CODE START: MOV AX,2387 MOV BX,192FH MOV CX,9256 CMP AX,BX JAE NEXT1 XCHG AX,BX NEXT1: CMP AX,CX JAE NEXT2 XCHG AX,CX NEXT2: CMP BX,CX JAE NEXT3 XCHG BX,CX NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 4 题目:中断向量为:1234:5678H ,编程将此中断向量写入类型0所在的中断向量表,上机调试出程序,并将程序和结果记录下来。(直接用MOV 指令写入即可) code segment assume cs:code,ds:code start:xor ax,ax mov ds,ax mov bx,0 mov cl,2 shl bx,cl mov word ptr[bx],5678h mov word ptr[bx+2],1234h mov ah,4ch int 21h code ends end start 2题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。 DA TA SEGMENT NUM DB 32,34,89H DA TA ENDS CODE SEGMEN T ASSUME CS:CODE,DS:DA TA STAR T: MOV AX,DA TA MOV DS,AX ;初始化D S LEA BX ,NUM ;取有效地址到BX ,以便访 问要排序的数 MOV AL,[BX] CMP AL,[BX +1] JGE NEXT1 ;若第一个数大则跳转,否则将 第一个与第二个数交换 XCHG AL,[BX+1] MOV [BX],AL NEXT1: CMP AL,[BX +2] JGE NEXT2;若第一个数大则跳转,否则将第 一个与第三个数交换 XCHG AL,[BX+2] MOV [BX],AL NEXT2: MOV AL,[BX+1];将第二个和第三个数比较 CMP AL,[BX +2] JGE NEXT3;若第二个数大则跳转,否则将第 二个与第三个数交换 XCHG AL,[BX+2] MOV [BX+1],AL NEXT3: MOV AH,4CH INT 21H CODE ENDS 3 题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segment num db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax lea bx,num mov al,[bx] cmp al,[bx+1] jae next1 xchg al,[bx+1] mov [bx],al next1:cmp al,[bx+2] jae next2 xchg al,[bx+2] mov[bx],al next2: mov al,[bx+1] cmp al,[bx+2] jae next3 xchg al,[bx+2] mov [bx+1],al next3: mov ah,4ch int 21h code ends end start

汇编语言上机实验

汇编语言上机实验 主讲:左琼

一、汇编程序的功能 1.MASM的功能 .检查语法错误,提示错误信息 .产生可重定位的目标文件(.OBJ) .处理各种伪指令 .处理宏库,对于宏指令进行宏扩展 .提供包括源程序、目标程序以及符号表在内的汇编列表文件(.LST) .提供一个夹有特定控制字符的符号交叉参考文件(.CRF)。 MASM是一个两次扫描(即从头到尾逐行阅读处理汇编源程序,直到END伪指令)的汇编程序,第一次扫描确定用户自定义符号的值,第二次扫描产生目标代码。即两次扫描后MASM就能将源程序翻译成目标程序(.OBJ)。 DATA1 SEGMENT USE16 A DD A1 ;第二遍扫描处理 DATA1 ENDS DATA2 SEGMENT USE16 A1 DW 125 ;第一遍扫描处理 DATA2 ENDS

2.其它汇编程序 TASM NASM 二、连接程序的功能 1.连接程序LINK的功能 .将指定的若干个目标模块(OBJ)和子程序库(LIB)中的子程序模块连接在一起,生成一个能够执行的文件(EXE/COM) .生成一个地址分配文件(MAP),描述各段的起始地址、结束地址、大小等信息。

三、在PC机上建立、调试、运行汇编源程序的方法 1.上机步骤 (1)建立与修改汇编源程序文件,扩展名为.asm 在WINDOWS98或WIN2000下可用记事本输入汇编源程序,然后以.asm为扩展名存盘。 (2)在DOS窗口下,汇编源文件以产生相应的目标文件(扩展名为.obj):执行命令: MASM DEMO.ASM;(简单方式) 或者: MASM DEMO.ASM (交互方式) (3)在DOS窗口下,连接目标文件以建立可执行文件(扩展名为.exe) LINK DEMO; (简单方式) LINK (交互方式) LINK命令还可以连接多个目标文件: LINK DEMO1(主模块名)+DEMO2+DEMO3 产生可执行文件DEMO1.EXE

实验一-8086汇编语言上机调试及基本操作.

实验一:8086汇编语言上机调试及基本操作 (验证性) 1、实验目的: (1)掌握常用DEBUG命令: G,D,R,T,U,Q。 (2)掌握工具软件EMU8086。 (3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。 (4)掌握简单的数值转换算法 2、实验说明: 计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数制之间的转换是一种基本功。 3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数 4、参考程序: ; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元 DATA SEGMENT; 数据段 RESULT_1 DB 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDS STACK SEGMENT STACK ; 堆栈段 STA DB 64 DUP(0) STACK_TOP DB 0 STACK ENDS CODE SEGMENT; 代码段

ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK START: MOV AX, DATA MOV DS, AX ; 设置数据段 MOV AX, STACK MOV SS, AX ; 设置堆栈段 LEA SP, STACK_TOP ; 设置栈顶指针 MOV AX, 2afH MOV CL, 100 DIV CL MOV RESULT_1, AL ; 除以100, 得百位数 MOV AL, AH MOV AH, 0 MOV CL, 10 DIV CL MOV RESULT_2, AL ; 余数除以10, 得十位数 MOV RESULT_3, AH ; 余数为个位数 MOV AX,4C00H ; 返回DOS INT 21H ; CODE ENDS END START ; 最后一行要按回车键 5、实验及报告要求: 1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的 伪指令和指令; 2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环 境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。 3)分别在debug和emu8086下调试该可执行文件,给出程序运行时的各段 地址(CS=?,DS=?SS=?ES=?)举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释;试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;如何观察转换结果的变化?4)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的 主要依据。 5)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法 和微机原理学习方法作出总结。 6、思考题: 1)用单步执行命令t运行程序,运行到mov ax, 4c00h,int 21h指令后,cs和 IP寄存器内容前后有何变化?产生变化的原因是什么? 2)试写出将BCD转换成二进制码的汇编程序。

微机原理实验编程题(完整)

1)(正确)比较两个无符号数的大小(量个数放在内存S3的连续两个单元中),将大数存入MAX单元中。 DATAS SEGMENT BUF DB 1,2 CNT EQU $-BUF DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV CX,CNT-1 LEA BX,BUF MOV AL,[BX] L2: INC BX CMP AL,[BX] JAE L1 MOV AL,[BX] L1:LOOP L2 ADD AL,30H - 1 - / 16

MOV DL,AL MOV AH,2 INT 21H MOV AH,4CH INT 21H CODES ENDS END STAR 2)(正确)试编一程序,求三个带符号数据中的最大值,并将最大值存入MAX单元中,设三个带符号数分别在三个变量X,Y,Z中存储。 DATAS SEGMENT X DB 5 Y DB-2 Z DB 0 MAX DB? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX

MOV AL,X MOV BL,Y CMP AL,BL JG L1 MOV AL,BL L1:MOV BL,Z CMP AL,BL L2: MOV MAX,AL MOV AH,4CH INT 21H CODES ENDS END START 3)(正确)根据MODE单元中编号0-7分别转向L0-L7标号处,执行L0-L7处分别完成显示‘0-7’字符,即当MODE=0时,转向L0标号,完成显示‘0’,当MODE=7时,转向L7标号,完成显示‘7’。 DATAS SEGMENT MODE DB 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: - 3 - / 16

北京理工大学微机原理实验报告

。 微机原理与接口技术 实验报告 实验内容:汇编语言程序设计实验 组别:12 姓名: 班级: 学号:

一、实验目的 1、熟悉IDE86集成开发环境的使用。 2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。 3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。 4、掌握利用汇编实现求和与求最值的方法。 5、掌握利用汇编实现数制转换的方法。 6、巩固理论知识,锻炼动手编程,独立思考的能力。 二、实验内容(具体内容) 1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。并查看前5个,前8 个数之和以及各寄存器和内存的状态。 2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及 MIN。 3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。要求实现数据显示,并返回DOS 状态。 三、实验方法 1、设计思路 (1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。 (2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。 将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态 (3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。最后在屏幕上显示并返回DOS状态。 2程序流程图 实验一、二和三的流程图分别如图1、图2和图3所示

微机原理实验2015

微机原理实验内容2015 实验一上机方法及寻址方式练习 一.实验目的 1.学习汇编语言上机方法。 2.深入了解DEBUG动态调试软件的应用,掌握下列命令的使用方法: U 反汇编G 运行程序 D 显示内存内容R 显示╱修改寄存器内容 E 修改内存内容 T 单步执行命令 Q 返回DOS 3.实际感受段地址,偏移地址,存储器组织及CPU寄存器等概念。 4.掌握8086/8088的主要寻址方式。 二.实验任务一双字相加 把内存字单元DATA1和DATA2中的两个数相加(例如123456H+456789H),结果存入SUM单元。 此程序的功能很简单,目的是为了通过该例掌握上机过程和实验方法。首先,对书写好的源程序进行编辑,汇编及连接,生成可执行的EXE文件。然后对EXE文件进行动态调试,排除错误,最终形成一个完全正确的程序。 1.建立源程序 .ASM 为了使大家对标准汇编语言程序结构有一个了解,并牢固掌握DEBUG调试程序的应用。在这里给出上面实验任务的程序清单。程序1是一个标准的汇编语言程序,共有三个段:数据段、堆栈段及代码段,在以后的编程中可以仿照这一结构。 程序1:双字相加 DATA SEGMENT ;define data segment DATA1 DW 1234H DATA2 DW 5678H SUM DW ? DATA ENDS STACK SEGMENT PARA STACK ‘STACK’;define stack segment DW 100 DUP (?) TOP LABEL WORD STACK ENDS CODE SEGMENT ;define code segment ASSUME CS: CODE,DS:DATA,SS:STACK START:MOV AX, DATA ;set DS register to current data segment MOV DS, AX MOV AX, STACK ;set up stack SS and SP regist MOV SS, AX MOV SP, OFFSET TOP MOV AX, DATA1 ADD AX, DATA2 MOV SUM, AX MOV AH,4CH ;return to DOS INT 21H CODE ENDS ;end of code segment END START ;end assembly

北京理工大学汇编语言实验报告实验三字符串操作实验

北京理工大学汇编语言实验报告 实验三字符串操作实验 实验三字符串操作实验 一、实验目的 1)熟悉串操作指令的功能与应用; 2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序; 3)了解汇编语言字符串处理基本流程; 二、实验软硬件环境 1)硬件环境:惠普64位一体化计算机及局域网; 2)软件环境:windows 8,红蜘蛛管理系统,MASM for Win dows 三、实验相关知识 1)字符串操作流程 SI寄存器保存源串首地址; DI寄存器保存目的串首地址; CX寄存器保存字符串长度;

CLD或STD指令设置字符串处理方向; 2)重复前缀指令 重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次,计数器CX中值减1,当CX 中值减至0时,停止重复执行,继续执行下一条指令。 寄存器的E内容条件为复前罡重复与操作直配合工作的字符串处理指令有MOVSSTOS^ LODS 当REPE/REP判断计数寄存器的内容CX是否 为0或ZF=O(即比较的两个操作数不等)亠只要满足一个则重复执行结束,否则继续执行。 可以与REPE/REP配合工作的串指令有CMP和SCAS 0或體茴比较P判个操数数相等的内容要满足一个则重复执行结束,否则继续执行。可以与 REPE/REP配合工作的串指令有CMPS口SCAS 3)字符串操作指令 lodsb、lodsw :把DS:SI 指向的存储单元中的数据装入AL或AX然后根据DF标志增减 SI ; stosb、stosw :把AL 或AX 中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI ; movsb movsw把DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF 标志分别增减SI和DI ; scasb、scasw:把AL或AX中的数据与

微机原理与汇编语言实验

微机原理与汇编语言 实验讲义

目录 第一章汇编语言编程环境熟悉 1 1.1汇编语言环境练习 (1) 1.2汇编语言程序设计 (6) 第二章超想-3000TB实验系统9 2.1概述 (9) 2.2实验系统配置与运行 (10) 2.3实验机模块原理 (10) 第三章串行方式下的硬件实验以及调试软件14 3.1串行方式下的硬件实验 (14) 3.2串口通信实验 (14) 3.3并行接口 (18) 3.4定时器/计数器与定时中断 (23) 3.5中断控制器 (28) 3.6模数、数模转换 (35) 3.7综合应用实验 (37) 第四章课程设计选题41 选题一设计指针式的屏显电子钟 (41) 选题二汉字菜单个去选唱程序 (41) 选题三微机实验系统综合测试软件 (42)

第一章 汇编语言编程环境熟悉 1.1 汇编语言环境练习 一、汇编程序功能: 三、为了运行汇编语言程序在磁盘上要存在以下文件: 1. 编辑程序,如EDIT.EXE 。 2. 编译程序,如MASM.EXE 。 3. 连接程序,如LINK.EXE 。 4. 调试程序,如DEBUG .EXE 。 汇编程序 编辑程序 连接程序 PROG .ASM PROG .OBJ PROG .EXE 二、汇编语言上机过程 D:>EDIT ABC.asm D:>MASM ABC ; 有语法错,回EDIT 下改该程序 D:>LINK ABC ; 有错,回EDIT 下改程序 D:>ABC 运行结果错,回EDIT 下改程序 或在DEBUG 下调试,找原因。 D:>DEBUG ABC.exe

四、汇编过程中各个文件的作用 1、ASM汇编语言源文件? 用汇编语言编写的源程序。 2、MASM5.0汇编程序? 将源文件转换成目标文件的程序(是一种工具)。 3、OBJ目标文件? 二进制的目标文件。 4、LIST列表文件? 同时列出源程序和机器语言程序清单,同时给出了符号表,便于调试,可有可无。 5、CRF交叉文件? 给出了用户定义的所有符号,及其所在行号和引用行号。 6、MAP映像文件? 给出了每个段在存储器中的分配情况。 7、LIB库文件? 给出程序中调用子程序的库文件。 五、DEBUG调试程序。 在DOS的提示符下,可键入命令: C:\DEBUG [D:][PA TH][FILENAME[.EXT][PARM1][PARM2] 其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。 如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PA TH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。在DEBUG程序调入后,将出现提示符,此时就可用DEBUG 命令来调试程序。

《微机原理及汇编语言》习题

第1章概述 一、填空题 1.电子计算机主要由运算器、控制器、存储器、输入设备和输出设备等五部分组成。 2.运算器和控制器集成在一块芯片上,被称作CPU。 3.总线按其功能可分数据总线、地址总线和控制总线三种不同类型的总线。 二、简答题 1.简述微处理器、微计算机及微计算机系统三个术语的内涵。 答:微处理器是微计算机系统的核心硬件部件,它本身具有运算能力和控制功能,对系统的性能起决定性的影响。微处理器一般也称为CPU;微计算机是由微处理器、存储器、I/O接口电路及系统总线组成的裸机系统。微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机又是微型计算机系统的组成部分。 2.微型计算机系统总线从功能上分为哪三类?它们各自的功能是什么? 答:微型计算机系统总线从功能上分为地址总线、数据总线和控制总线三类。地址总线用于指出数据的来源或去向,单向;数据总线提供了模块间数据传输的路径,双向;控制总线用来传送各种控制信号或状态信息以便更好协调各功能部件的工作。

三、选择题 1.下列无符号数中最小的数是(A)。 A.(01A5)H B.(1,1011,0101)B C.(2590)D D.(3764)O 2.下列有符号数中最大的数是(D)。 A.1002H B.1001 0011 0010 1100B C.2570O D.9614D 3.在机器数(A)中,零的表示形式是唯一的。 A.补码B.原码C.补码和反码D.原码和反码4.8位二进制数补码的数值表示范围为(A)。 A. -128~+127 B.-127~+127 C. 一129~+128 D.-128~+128

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