微机原理上机实验答案

微机原理上机实验答案
微机原理上机实验答案

实验01A

将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器

程序如下:

CODE SEGMENT

ASSUME CS:CODE

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV AX,0FFFFH

MOV BX,AX

MOV CX,AX

MOV DX,AX

MOV SI,AX

MOV DI,AX

MOV BP,AX

;==============================

RET

START ENDP

CODE ENDS

END STT

实验01B

将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中程序如下:

DA TA SEGMENT

ORG 1000H

H1 DB 5 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV AL,0FFH

MOV DI,1000H

MOV CX,5 ;循环5次

LP1:MOV [DI],AL ;FF放入1000H-1004H中

INC DI

DEC CX

JNZ LP1

;==============================

RET

START ENDP

CODE ENDS

END STT

实验02A

编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=?

程序如下:

DA TA SEGMENT

ORG 1000H

H1 DB 10 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

Mov ax,dseg

Mov ds,ax

;==============================

MOV SI,1000H

;不带最高位进位的全加器

MOV DI,1003H

MOV BX,1006H

MOV CX,3

CLC

AA: MOV AL,[SI]

ADC AL,[DI]

MOV [BX],AL

PUSHF

;保护FR,这里其实没有必要,因为INC不会产生进位

INC SI

INC DI

INC BX

POPF

LOOP AA

MOV DL,0 ;最高位进位

ADC DL,0

MOV DI,1009H

MOV [DI],DL

;==============================

RET

START ENDP

CODE ENDS

END STT

实验02B

用串传送指令把A程序的数据块(被加数、加数、和)偏移地址1000H开始的区域传递到同一数据段的偏移地址为1010H开始的区域,并利用DEBUG查看运行结果

程序如下:

DA TA SEGMENT

ORG 1000H

H1 DB 20 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV AX,DS ;使ES段地址与DS相同

MOV ES,AX

MOV SI,1000H

;不带最高位进位的全加器

MOV DI,1003H

MOV BX,1006H

MOV CX,3

CLC

AA: MOV AL,[SI]

ADC AL,[DI]

MOV [BX],AL

PUSHF

;保护FR,这里其实没有必要,因为INC不会产生进位

INC SI

INC DI

INC BX

POPF

LOOP AA

MOV DL,0 ;最高位进位

ADC DL,0

MOV DI,1009H

MOV [DI],DL

MOV SI,1000H ;串传送

MOV DI,1010H

MOV CX,5

CLD

REP MOVSW ;一次传送一个字

;==============================

RET

START ENDP

CODE ENDS

END STT

实验02C,选作

编写一个两位十进制数加法程序,当从键盘上输入:n1n2+n3n4则在CRT上显示n1n2+n3n4=n5n6

程序如下:

DA TA SEGMENT

H1 DB "The addends all must be two figures, insufficient adds 0 in front.",13,10,'$'

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV AX,DA TA

MOV DS,AX

LEA DX,H1 ;打印注释:加数和被加数都必须为两位数,不够的前面补0

MOV AH,09H

INT 21H

SUB CX,CX ;CX清零

SUB DX,DX ;DX清零

CLC ;清CF

MOV AH,1 ;输入第1个数

INT 21H

MOV CH,AL ;放入CH

SUB CH,30H ;ASCII码调整

INT 21H ;输入第2个数

MOV CL,AL ;放入CL

SUB CL,30H ;ASCII码调整

MOV AH,2 ;打印加号

MOV DL,2BH

INT 21H

MOV AH,1 ;输入第3个数

INT 21H

MOV DH,AL ;放入DH

SUB DH,30H ;ASCII码调整

INT 21H ;输入第4个数

MOV DL,AL ;放入DL

SUB DL,30H ;ASCII码调整

ADD CL,DL ;ASCII码个位加法

CMP CL,10;比较个位数结果是否大于10

JNC AA;大于等于10则跳至AA

ADD CH,DH;个位不向十位进位的十位加法

JMP BB

AA: ADD CH,DH ;个位向十位有进位的十位加法ADD CH,1

SUB CL,10

BB: MOV DL,3DH ;打印等号

MOV AH,2

INT 21H

CMP CH,10 ;比较十位数结果是否大于10

JNC CC

MOV DL,0 ;打印十位不向百位进位的百位=0

INT 21H

JMP CCC

CC: MOV DL,31H ;打印十位向百位进位的百位=1

INT 21H

SUB CH,10

CCC:ADD CH,30H ;ASCII码调整

MOV DL,CH ;打印结果中的十位

INT 21H

ADD CL,30H ;ASCII码调整

MOV DL,CL ;打印结果中的个位

INT 21H

MOV AH,1 ;暂停

INT 21H

;==============================

RET

START ENDP

CODE ENDS

END STT

实验03A

在数据段偏移地址0100H处开始,存放0-9的平方值(构成一个表格),任给一个自然数M 在0110H单元中(0<=M<=9),查表求出M的平方值,并将结果放入0111H单元。

程序如下:

DA TA SEGMENT

ORG 0100H

H1 DB 00,01,04,09,16,25,36,49,64,81

ORG 0110H

H2 DB 7,?

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV AX,DA TA

MOV DS,AX

MOV SI,OFFSET H2

MOV AL,[SI]

MOV BX,OFFSET H1

XLA T

INC SI

MOV [SI],AL

;==============================

RET

START ENDP

CODE ENDS

END STT

实验03B

从内存1000H开始,建立19个自然递增然后又递减的数据串(0-9-0),用DEBUG查看运行结果。

程序如下:

DA TA SEGMENT

ORG 1000H

H1 DB 20 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV SI,OFFSET H1

MOV DI,OFFSET H1

ADD DI,12H

MOV AL,0

MOV CX,10

AA: MOV [SI],AL

MOV [DI],AL

INC SI

DEC DI

INC AL

LOOP AA

;==============================

RET

START ENDP

CODE ENDS

END STT

实验03C,选作

在数据段偏移地址1000H处,安排部分七段LED显示码表,要求从键盘上任给一个0~F中的数,然后再屏幕上显示出其对应的码值。七段共阴极LED显示码表见实验册P14。

程序如下:

DA TA SEGMENT

ORG 1000H

H1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

H2 DB 1 DUP(?)

TIP DB 13,10,"The input number must be a HEX (0~F), press to quit.",13,10,'$'

ERR DB 13,10,"The input number must be a HEX (0~F).",13,10,'$'

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV AX,DA TA

MOV DS,AX

LEA DX,TIP ;打印TIP信息

MOV AH,09H

INT 21H

BEGIN:

MOV DL,13 ;打印换行

MOV AH,2

INT 21H

MOV DL,10 ;打印回行首

INT 21H

MOV AH,1 ;等待从键盘输入

INT 21H

MOV SI,OFFSET H2 ;保护输入

MOV [SI],AL

CMP AL,27 ;如果按下键,跳至QUIT

JZ QUIT

CALL DISPLAY0 ;调用DISPLAY0子程序

CALL ASCII2HEX ;调用ASCII2HEX子程序

CMP AL,0FFH ;如果AL不等于FF(出错码)则跳至CORRECT

JNZ CORRECT

LEA DX,ERR ;打印错误信息

MOV AH,09H

INT 21H

JMP FINISH ;跳至FINISH

CORRECT:

MOV BX,OFFSET H1 ;查表

XLA T

MOV AH,0

MOV BX,0

MOV BL,AL ;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位AND AL,0F0H

MOV CL,4

SHR AL,CL

AND BL,0FH

CALL HEX2ASCII ;调用HEX2ASCII

CALL DISPLAY;调用DISPLA Y子程序

MOV AL,BL

CALL HEX2ASCII

CALL DISPLAY

MOV DL,72 ;打印字母"H"

MOV AH,2

INT 21H

JMP FINISH

QUIT:CALL ESCAPE ;调用ESCAPE子程序

FINISH:

JMP BEGIN

;==============================

RET

START ENDP

ASCII2HEX PROC NEAR

CMP AL,30H ;ASCII转16进制子程序

JB ERROR ;如果AL<0则跳至ERROR

CMP AL,39H

JBE NUMBER ;如果AL<=9则跳至NUMBER CMP AL,46H

JA ERROR ;如果AL>F则跳至ERROR

SUB AL,07H

NUMBER:

SUB AL,30H

JMP DONE

ERROR:

MOV AL,0FFH

DONE:

RET

ASCII2HEX ENDP

HEX2ASCII PROC NEAR

CLC ;16进制转ASCII子程序

DAA

ADD AL,0F0H

ADC AL,40H

RET

HEX2ASCII ENDP

DISPLAY PROC NEAR

PUSH DX ;显示结果子程序

MOV DL,AL

MOV AH,2

INT 21H

POP DX

RET

DISPLAY ENDP

DISPLAY0 PROC NEAR

PUSH AX ;该子程序打印输入及":"

PUSH DX

PUSHF

MOV DL,13

MOV AH,2

INT 21H

MOV DL,10

INT 21H

MOV DL,[SI] ;打印输入

INT 21H

MOV DL,58 ;打印":"

INT 21H

POPF

POP DX

POP AX

RET

DISPLAY0 ENDP

ESCAPE PROC NEAR

MOV AH,4CH ;返回操作系统子程序

INT 21H

RET

ESCAPE ENDP

CODE ENDS

END STT

实验04A

把BX中的“1”的个数放到AL中,并在屏幕上显示“1”的个数。程序如下:

CODE SEGMENT

ASSUME CS:CODE

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

CLC

MOV AX,0

MOV DX,0

MOV BX,000FH

MOV CX,16

CHECK:

SHL BX,1

ADC DL,0

CMP DL,1

JZ COUNT

CONTINUE:

LOOP CHECK

JMP FINISH

COUNT:

ADD AL,1

DAA

CLC

MOV DX,0

JMP CONTINUE

FINISH:

MOV AH,0

MOV BX,0

MOV BL,AL ;分离AL的高4位和低4位,分离后AL中为高4位,BL中为低4位

AND AL,0F0H

MOV CL,4

SHR AL,CL

AND BL,0FH

CALL HEX2ASCII ;调用HEX2ASCII

CALL DISPLAY;调用DISPLA Y子程序

MOV AL,BL

CALL HEX2ASCII

CALL DISPLAY

;==============================

RET

START ENDP

HEX2ASCII PROC NEAR

CLC ;16进制转ASCII子程序

DAA

ADD AL,0F0H

ADC AL,40H

RET

HEX2ASCII ENDP

DISPLAY PROC NEAR

PUSH DX ;显示结果子程序

MOV DL,AL

MOV AH,2

INT 21H

POP DX

RET

DISPLAY ENDP

CODE ENDS

END STT

实验04B,选作

编写程序在CRT上显示图形(图形见实验册P17)。程序如下:

CODE SEGMENT

ASSUME CS:CODE

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV BL,14H

MOV BH,1

MOV CX,0AH

LP: PUSH BX

CALL SPACE

CALL STAR

CALL CRLF

POP BX

DEC BL

ADD BH,2

LOOP LP

;============================== RET

START ENDP

SPACE PROC NEAR

;打印空格子程序

PUSH CX

MOV CX,0

MOV AH,2

MOV DL,32

MOV CL,BL

LP1:INT 21H

LOOP LP1

POP CX

RET

SPACE ENDP

STAR PROC NEAR

;打印"*"子程序

PUSH CX

MOV CX,0

MOV DL,2AH

MOV AH,2

MOV CL,BH

LP2:INT 21H

LOOP LP2

POP CX

RET

STAR ENDP

CRLF PROC NEAR

;回车换行子程序

MOV DL,13

MOV AH,2

INT 21H

MOV DL,10

INT 21H

RET

CRLF ENDP

CODE ENDS

END STT

实验04C,选作

自动生成1至99BCD数并送屏幕显示,显示格式见实验册P19。程序如下:

CODE SEGMENT

ASSUME CS:CODE

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV BL,16

MOV AL,0

CALL PRINT

CALL CRLF

;==============================

RET

START ENDP

PRINT PROC NEAR

;打印数字子程序

MOV AH,2

MOV DH,1

MOV CX,10

LP2:PUSH CX

MOV CX,10

MOV BL,30H

LP0:CMP BH,30H

JZ AA

JMP BB

AA: CMP BL,30H

JZ CON

BB: MOV DL,BH

INT 21H

MOV DL,BL

INT 21H

CALL SPACE CON:INC BL

LOOP LP0

INC BH

POP CX

LOOP LP2

RET

PRINT ENDP

SPACE PROC NEAR ;打印空格子程序

PUSH CX

MOV CX,0

MOV AH,2

MOV DL,32

MOV CL,2

LP1:INT 21H

LOOP LP1

INC DH

CMP DH,17

JZ KK

JMP LL

KK: CALL CRLF

LL: POP CX

RET

SPACE ENDP

CRLF PROC NEAR

;回车换行子程序

MOV DL,13

MOV AH,2

INT 21H

MOV DL,10

INT 21H

RET

CRLF ENDP

CODE ENDS

END STT

实验05A

从首地址为BUF开始存放10个数(单字节无符号数),从这些数种找出最大值,存入MAX 中,并显示到屏幕上。

程序如下:

DA TA SEGMENT

ORG 1000H

BUF DB 1H,2H,3H,4H,9H,5H,6H,0EH,8H,7H

ORG 1020H

MAX DB 1 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;==============================

MOV AX,DA TA

MOV DS,AX

CALL CHAMAX

CALL HEX2ASCII

MOV DL,AL

MOV AH,2

INT 21H

;==============================

RET

START ENDP

CHAMAX PROC NEAR

MOV SI,OFFSET BUF

MOV AL,[SI]

MOV CX,9

INC SI

F0: CMP AL,[SI]

JGE F1

MOV AL,[SI]

F1: INC SI

LOOP F0

MOV DI,OFFSET MAX

MOV [DI],AL

RET

CHAMAX ENDP

HEX2ASCII PROC NEAR

CLC ;16进制转ASCII子程序

DAA

ADD AL,0F0H

ADC AL,40H

RET

HEX2ASCII ENDP

CODE ENDS

END STT

实验05B

在BUF开始存放10个字节的带符号数组,分别统计正数、负数、零的个数,存放在数组的

后面。

程序如下:

DA TA SEGMENT

ORG 1000H

BUF DW 1,2,3,0,-4,-5,-6,-7,-8,-9

EZ DB 0H

LZ DB 0H

T1 DB "ZHENG SHU, LING, FU SHU:",13,10,'$' DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START PROC FAR

STT:PUSH DS

SUB AX,AX

PUSH AX

;============================== MOV AX,DA TA

MOV DS,AX

CLC

MOV AX,0

MOV BX,0

MOV SI,OFFSET BUF

MOV CX,10

CHECK:

MOV AX,[SI]

CMP AX,0

JZ EQALZERO

SHL AX,1

ADC BL,0

CMP BL,1

JZ LESSZERO

CONTINUE:

ADD SI,2

CLC

MOV BL,0

LOOP CHECK

JMP FINISH

EQALZERO:

MOV DI,OFFSET EZ

MOV DL,[DI]

INC DL

MOV [DI],DL

JMP CONTINUE

LESSZERO:

MOV DI,OFFSET LZ

MOV DL,[DI]

INC DL

MOV [DI],DL

JMP CONTINUE

FINISH:

MOV BL,10

MOV DI,OFFSET EZ

MOV AL,[DI]

SUB BL,AL

MOV DI,OFFSET LZ

MOV AL,[DI]

SUB BL,AL

MOV AL,BL

PUSH DX

PUSH AX

LEA DX,T1

MOV AH,09H

INT 21H

POP AX

POP DX

CALL HEX2ASCII

CALL DISPLAY

MOV DI,OFFSET EZ

MOV AL,[DI]

CALL HEX2ASCII

CALL DISPLAY

MOV DI,OFFSET LZ

MOV AL,[DI]

CALL HEX2ASCII

CALL DISPLAY

;============================== RET

START ENDP

同济大学微机原理实验报告

《微机原理与接口技术》上机实验报告

《微机原理与接口技术》上机实验报告

实验报告:(包括目的、方法、原理、结果或实验小节等)。 一、实验目的 掌握简单并行接口的工作原理及使用方法。 二、实验内容 1、按下面图一简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。 3、按下面图二简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。 图一图二 三、实验中使用到的程序 对于简单并行输出接口: stack1 segment stack 'stack' dw 32 dup(0) stack1 ends data segment baseport equ 0ec00h-280h;实际基址 port equ baseport+2a8h;基址+偏移地址 data ends code segment assume ss:stack1,ds:data,cs:code start: mov ax,data mov ds,ax again: mov ah,1 int 21h

西电微机原理大作业

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

微机原理硬件设计综合作业 基于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 ,其余参与译码。电路如图:

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

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

2

3

实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4

内蒙古工业大学微机原理实验指导答案.doc

被嗅材尊机原理与旅用实验指导布实验 程禹够告 沽说:信息工程修陇班披, 电8 77-7班g生名:Eg 样号,2011202030 实验一编辑、汇编、 连接、调试程序的使用 程序设计A 设计要求 (1)将FFFFH 送到AX, SI, DI, BP, DS, ES 寄存器 (2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器

内容,并判断是否正确。)程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,0FFFFH MOV SI,AX MOV DI,AX MOV BP,AX MOV DS,AX MOV ES,AX RET STARTENDP CODE ENDS END STT B、设计要求 ⑴将1,2,3,4,5分别送到数据段偏移地址为1000H, 1001H, 1002H, 1003H, 1004H,单元中。 ⑵编程 DATA SEGMENT ORG 1000H DATA ENDS CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV AL,1 MOV DS:[1000H],AL

MOV AL,2 MOV DS:[1001H],AL MOV AL,3 MOV DS:[1002H],AL MOV AL,4 MOV DS:[1003H],AL MOV AL,5 MOV DS:[1004H],AL RET STARTENDP CODE ENDS END STT 实验二、加法程序设计 设计内容A、设计要求 (1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地 址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低 对低),求这两数据之和,并将结果放在流量数据之后。(eg: 1234 56H+78 9AH=12 AC FOH) (2)编程 DATA SEGMENT ORG 1000H H1 DB56H J34H,12H,9AH,78H H2 DB 3DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOVSIJOOOH MOV DI,1003H MOV BX,1005H MOV CX,2 CLC LP:MOVAL,[SI] MOV DL,[DI[ ADCAL,DL MOV [BX],AL INC SI

西电微机原理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.学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。 2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 3、熟悉和掌握DEBUG 常用命令的使用 二、实验要求: 1、上机前,要认真阅读前言和课本相关章节 2、上机前,画好流程图,编写好程序 3、上机时,注意出现的错误,记录下出错信息,翻译之 4、完成好实验报告 三、实验内容: 在内存TAB 开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤ 15),求X 的平方值,并把结果存放在Y 单元中。 (2).分析 X 平方的值是tab 为首地址且x 的值为有效地址中的值。 data segment x db 8 y db data ends stack segment para'stack' db 100 dup(0) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax

mov al,x lea si,tab add si,ax mov al,[si] mov y,al mov ah,4ch int 21h code ends end start (3).程序调试: 4.心得体会 了解了顺序结构,掌握了程序的运行,调试。 实验二分支程序设计 一、实验目的: 熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。掌握分支程序设计、编写、调试和运行的方法。 二、实验要求: 1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。 2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。 二、实验内容

西电微机原理实验报告

微机系统实验报告 班级: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

微机原理实验报告

微机原理 实验报告 学校:湖北文理学院、班级:电子1413 姓名:杨仕浩 学号:2014111347 指导老师:吉向东

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?)

TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL A DDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: M OV AL,[SI] MOV BL,[DI] ADC AL,BL AAA MOV [SI],AL DEC SI DEC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H AD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SI

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

西电微机原理上机

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:

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

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

汇编语言上机题 姓名:学号:成绩: 实验一、上机过程及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

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

微机原理实验答案汇总

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 2.题目:编程将(BX)=8600H、(CX)=3489H、(DX)=9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 ;CODE SEGMENT ASSUME CS:CODE START: MOV BX,8600h MOV CX,3489H MOV DX,9235 CMP BX,CX JGE NEXT1 XCHG BX,CX NEXT1: CMP BX,DX JGE NEXT2 XCHG BX,DX NEXT2: CMP CX,DX JGE NEXT3 XCHG CX,DX NEXT3:

MOV AH,4CH INT 21H CODE ENDS END START 3.题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。 DATA SEGMENT NUM DB 32,34,89H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DAT START: MOV AX,DATA MOV DS,AX ;初始化DS 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 END START 4.题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segment num db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data

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

微机上机作业三 容: 编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(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

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

微机原理与接口技术 实验报告 实验内容:汇编语言程序设计实验 组别: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所示

微机原理实验参考答案(航大)

《微机原理》实验参考答案 实验1 汇编基本指令及顺序程序设计实验 实验2 分支与DOS中断功能调用程序设计实验 实验3 循环结构程序设计实验 实验4 存储器扩展实验 实验5 8259应用编程实验 实验1汇编基本指令及顺序程序设计实验 一、实验目的 1、掌握汇编语言的开发环境和上机过程; 2、掌握DEBUG命令; 3、掌握顺序程序设计方法; 4、掌握寻址方式; 5、理解和掌握汇编基本指令的功能。 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。要求:用3种方法实现。 答:方法一CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H XCHG AX,BX CODE ENDS END START

方法三CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H PUSH AX PUSH BX POP AX POP BX CODE ENDS END START 2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。 MOV AX,BX 寄存器寻址,将BX内容送AX MOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AX MOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。 3、已知有如下程序段: MOV AX,1234H MOV CL,4 在以上程序段的基础上,分别执行以下指令: ROL AX,CL AX=2341H ROR AX,CL AX=4123H SHL AX,CL AX=2340H SHR AX,CL AX=0123H SAR AX,CL AX=0123H RCL AX,CL 带进位标志位的循环左移 RCR AX,CL 带进位标志的循环右移 4、设有以下部分程序段: TABLE DW 10H,20H,30H,40H,50H ENTRY DW 3 ┇ LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] ┇ 要求:(1)将以上程序段补充成为一个完整的汇编程序。

微机原理上机实验报告

微机原理上机实验报告 实验六:74HC138译码器实验实验十:LED 16x16点阵显示实验

微机原理上机实验(六)实验报告 实验六:74HC138译码器实验 一、实验目的 1、掌握74HC138译码器的工作原理,熟悉74HC138译 码器的具体运用连接方法,了解74HC138是如何译码的。 2、认真预习本节实验内容,尝试自行编写程序,填写实 验报告 二、实验内容 1、编写程序:使用8255的PC0、PC1、PC2控制 74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。 2、运行程序,验证译码的正确性。 三、实验原理图 四、实验步骤

1、连线说明: F7区:A、B、C — —D3区:PC0、PC1、PC2 F7区:G1、G2A、G2B — — C1区:VCC、GND、 GND F7区:JP63 — —F4区:JP18(LED 指示灯) D3区:CS、A0、A1 — — A3区:CS1、A0、 A1 2、调试程序,查看运行结果是否正确 五、实验代码 Con_8255EQU 0273H ;8255控制口 PC_8255 EQU 0272H ;8255 PC口_STACK SEGMENT STACK ;设置堆栈段 DW 100 DUP(?) _STACK ENDS CODE SEGMENT START PROC NEAR

ASSUME CS:CODE, SS:_STACK MOV DX,Con_825 5 MOV AL,80H OUT DX,AL ;8255初始化,PC口作输 出用,向8255的控制口 输入置位/复位控制字 10000000B,PC0~PC7 全部复位 MOV DX,PC_8255 MOV AL,0 START1: OUT DX,AL 将00000000B输入8255 的PC口 CALL Delay 延时 INC AL AL加一 JMP START1 循环 Delay PROC NEAR ;延时 Delay1: XOR CX,CX ;CX清零 LOOP $ 当前位置循环一次后推 出 RET Delay ENDP

微机原理习题集答案1-5

第1章概述 一、填空题 1.运算器、控制器、存储器、输入设备和输出设备。 2.运算器、控制器。 3.数据总线、地址总线、控制总线。 4.系统总线(或通信总线);系统内总线(板级总线);内部总线。 5.程序存储、程序控制、冯·诺依曼型。 二、简答题 1.答:微处理器是微计算机系统的核心硬件部件,它本身具有运算能力和控制功能,对系统的性能起决定性的影响。微处理器一般也称为CPU;微计算机是由微处理器、存储器、I/O接口电路及系统总线组成的裸机系统。微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机又是微型计算机系统的组成部分。 2.答:总线是模块与模块之间传送信息的一组公用信号线。 总线标准的建立使得各种符合标准的模块可以很方便地挂在总线上,使系统扩展和升级变得高效、简单、易行。因此微型计算机系统中普遍采用总线结构。 3.答:微型计算机系统总线从功能上分为地址总线、数据总线和控制总线三类。地址总线用于指出数据的来源或去向,单向;数据总线提供了模块间数据传输的路径,双向;控制总线用来传送各种控制信号或状态信息以便更好协调各功能部件的工作。 第2章计算机中的数制与编码 一、填空题 1. (1) (0110 1110)二进制原码=(+110 1110)二进制真值=(+110)十进制真值 (0110 1110)二进制反码=(+110 1110)二进制真值=(+110)十进制真值 (0110 1110)二进制补码=(+110 1110)二进制真值=(+110)十进制真值 (2) (1011 0101)二进制原码=(-011 0101)二进制真值=(-53)十进制真值 (1011 0101)二进制反码=(-100 1010)二进制真值=(-74)十进制真值 (1011 0101)二进制补码=(-100 1011)二进制真值=(-75)十进制真值 2. (1) (+101 0110)二进制真值=(0101 0110)原码=(0101 0110)反码=(0101 0110)补码 (2) (-101 0110)二进制真值=(1101 0110)原码=(1010 1001)反码=(1010 1010)补码

相关文档
最新文档