文档库 最新最全的文档下载
当前位置:文档库 › 微机原理上机作业

微机原理上机作业

微机原理上机作业
微机原理上机作业

微机原理作业

(3)

专业:

班级:

学号:

姓名:

一、实验目的

1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法。

2.熟练掌握DOS常用功能的调用方法。

二、实验仪器

586微机一台

三、实验内容

编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为:

(1)按下“1”键,完成字符串小写字母变成大写字母。

用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。

(2)按下“2”键,完成找最大值(二选一)。

a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来;

b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。

(3)按下“3”键,完成排序(二选一)。

a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示;

b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。

(4)按下“4”键,显示时间。

首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为:

XX(时): XX(分): XX(秒)

最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。

(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

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK START:

MOV AX, DATA

MOV DS, AX

MOV AX, STACK

MOV SS, AX

MOV SP, OFFSET TOP

MAIN: CALL FAR PTR MENU ; 设置显示器

AGAIN: MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 41 ; 列号

MOV DH, 10 ; 行号

INT 10H ; 光标位置设置

MOV AH, 1

INT 21H

CMP AL, '1'

JB AGAIN

CMP AL, '5'

JA AGAIN

SUB AL, '1'

SHL AL, 1 ; (N-1)*2

CBW

LEA BX, TABLE

ADD BX, AX

JMP WORD PTR [BX]

G1: CALL FAR PTR CHGLTR

MOV AH, 8

INT 21H

CMP AL, 1BH

JZ MAIN

JMP G1

G2: CALL FAR PTR MAXLTR

MOV AH, 8

INT 21H

CMP AL, 1BH

JZ MAIN

JMP G2

G3: CALL FAR PTR SORTNUM

MOV AH, 8

INT 21H

CMP AL, 1BH

JZ MAIN

JMP G3

G4: CALL FAR PTR TIMCHK

MOV AH, 8

INT 21H

CMP AL, 1BH

JZ MAIN

JMP G4

G5: MOV AH, 4CH

INT 21H

MENU PROC FAR ; 显示主界面

;设置显示器方式

MOV AH, 0

MOV AL, 3;

MOV BL, 0;

INT 10H ; 清屏

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 5 ; 行号

INT 10H ; 光标位置设置

MOV AH, 9

LEA DX, STRING0

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 6 ; 行号

INT 10H ; 光标位置设置MOV AH, 9

LEA DX, STRING1

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 7 ; 行号

INT 10H ; 光标位置设置

MOV AH, 9

LEA DX, STRING2

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 8 ; 行号

INT 10H ; 光标位置设置

MOV AH, 9

LEA DX, STRING3

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 9 ; 行号

INT 10H ; 光标位置设置 MOV AH, 9

LEA DX, STRING4

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 10 ; 行号

INT 10H

MOV AH, 9

LEA DX, STRING5

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 11 ; 行号

INT 10H ; 光标位置设置

MOV AH, 9

LEA DX, STRINGN

INT 21H

RET

MENU ENDP

CHGLTR

PROC FAR ; 将输入字符串中小写字母便换成大写字母RECHG: ; 设置显示器方式

MOV AH, 0

MOV AL, 3

MOV BL, 0

INT 10H ; 清屏

MOV AH, 2

MOV BH, 0 ;页号

MOV DL, 5 ; 列号

MOV DH, 5 ; 行号

INT 10H ; 输入提示光标位置设置

MOV AH, 9

LEA DX, IN_STR

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 6 ; 行号

INT 10H ; 输入字符串光标位置设置

MOV AH, 0AH

LEA DX, KEYBUF

INT 21H ; 输入字符串

CMP KEYBUF + 1, 0

JZ RECHG ; 判断输入字符串是否为空串

LEA BX, KEYBUF + 2

MOV AL, KEYBUF + 1

CBW

MOV CX, AX

ADD BX, AX

MOV BYTE PTR [BX], '$' ; 在输入字符串尾加结束标志$ MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 7 ; 行号

INT 10H ; 源字符串提示光标位置设置

MOV AH, 9

LEA DX, PRESTR

INT 21H ; 输出源字符串提示

MOV AH, 9

LEA DX, KEYBUF + 2

INT 21H ; 输出源字符串

LEA BX, KEYBUF + 2

LCHG:

CMP BYTE PTR [BX], 61H

JB NOCHG

AND BYTE PTR [BX], 0DFH

NOCHG:

INC BX

LOOP LCHG ; 将字符串中小写字母转换成大写字母

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 8 ; 行号

INT 10H ; 新字符串提示光标位置设置

MOV AH, 9

LEA DX, NEWSTR

INT 21H ; 输出新字符串提示

MOV AH, 9

LEA DX, KEYBUF + 2

INT 21H ; 输出新字符串

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 9 ; 行号

INT 10H ; 提示信息光标位置设置

MOV AH, 9

LEA DX, HINTSTR

INT 21H ; 输出提示信息

RET

CHGLTR ENDP

MAXLTR PROC FAR ; 在输入字符串中找出最大值REMAX: ;设置显示器方式

MOV AH,

MOV AL, 3

MOV BL, 0

INT 10H ; 清屏

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 5 ; 行号

INT 10H ; 输入提示光标位置设置

MOV AH, 9

LEA DX, IN_STR

INT 21H ; 输入字符串提示

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 6 ; 行号

INT 10H ; 输入字符串光标位置设置

MOV AH, 0AH

LEA DX, KEYBUF

INT 21H ; 输入字符串

CMPKEYBUF + 1, 0

JZ REMAX ; 判断输入字符串是否为空串

LEA BX, KEYBUF + 2

MOV AL, KEYBUF + 1

CBW

MOV CX, AX

ADD BX, AX

MOV BYTE PTR [BX], '$' ; 在输入字符串位加结束标志$ MOV AH, 2 MOV BH, 0 ; 页号

MOV DL, 5

MOV DH, 7 ; 行号

INT 10H ; 源字符串提示光标位置设置

MOV AH, 9

LEA DX, OUT_STR

INT 21H ; 输出字符串提示

MOV AH, 9

LEA DX, KEYBUF + 2

INT 21H ; 输出字符串

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 8 ; 行号

INT 10H ; 新字符串提示光标位置设置

MOV AH, 9

LEA DX, MAXCHR

INT 21H ; 输出字符串中最大值提示

MOV DL, 0

LEA BX, KEYBUF + 2

LCMP:

JB NOLCHG

MOV DL, [BX]

NOLCHG:

INC BX

LOOP LCMP ; 找出字符串中最大字符,放入DL

MOV AH, 2

INT 21H ; 输出字符串中最大字符

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 9 ; 行号

INT 10H ; 提示信息光标位置设置

MOV AH, 9

LEA DX, HINTSTR

INT 21H ; 输出提示信息

RET

MAXLTR ENDP

SORTNUM PROC FAR ; 对输入数据组排序RESORT: ;设置显示器方式

MOV AH, 0

MOV AL, 3

MOV BL, 0

INT 10H 清屏

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 5 ; 行号

INT 10H ; 输入提示光标位置设置

MOV AH, 9

LEA DX, IN_NUM

INT 21H

MOV AH, 2

MOV DL, 5 ; 列号

MOV DH, 6 ; 行号

INT 10H ; 输入数据组光标位置设置

MOV AH, 0AH

LEA DX, KEYBUF

INT 21H ; 输入数据组字符串

CALL CIN_INT ; 字符串转换成数据串

CMP AL, 0

JZ RESORT ; 判断数据串是否有错

CMP NUMBUF, 0

JZ RESORT ; 判断数据串是否为空

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 7 ; 行号

INT 10H ; 输出提示光标位置设置

MOV AH, 9

LEA DX, OUT_NUM

INT 21H ; 输出数据串提示

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 8 ; 行号

INT 10H ; 输出数据组光标位置设置

CALL FAR PTR MPSORT ; 数据组排序

CALL FAR PTR INT_OUT ; 数据组的输出

MOV AH, 2 MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 9 ; 行号

INT 10H ; 提示信息光标位置设置

MOV AH, 9

LEA DX, HINTSTR

INT 21H ; 输出提示信息

RET

SORTNUM ENDP

IN_INT PROC NEAR

MOV CL, KEYBUF + 1

LEA SI, KEYBUF + 2

MOV CH, 0 ; 数据组数据个数置0

MOV DH, 10

MOV AL, 0 ; 当前数据x=0

MOV DL, 0 ; 有无数据标志置0,即无数据FNDNUM:

CMP BYTE PTR [SI], ' '

JZ ADDNUM ; 判断当前字符是否为空格

CMP BYTE PTR [SI], '0'

JB ERRNUM

CMP BYTE PTR [SI], '9'

JA ERRNUM ; 判断当前字符是否在'0'-'9'之间

MOV DL, 1 ; 有无数据标志置1,即有数据

MUL DH

XOR BH, BH

MOV BL, [SI]

ADD AX, BX

SUB AX, '0' ; 计算出当前数据x

CMP AH, 0

JA ERRNUM ; 判断x是否越界

JMP NEXT

ADDNUM:

CMP DL, 1

JNZ NEXT ; 判断是否有数据

INC CH ; 数据组数据个数加1

CALL ADDNEW

MOV DL, 0

MOV AL, 0 ; 清零

NEXT:

INC SI

DEC CL

CMP CL, 0

JNZ FNDNUM ; 依次检查各字符

CMP DL, 1

JNZ TOTAL ; 判断是否有未加入的数据

INC CH

CALL ADDNEW

TOTAL:

MOV NUMBUF, CH

MOV AL, 1 ; 输入数据无错误

JMP CRTNUM ERRNUM:

MOV AL, 0 ; 输入数据有错误

CRTNUM:

RET

CIN_INT ENDP ADDNEW PROC NEAR ; 增加新数

; 入口参数:CH(数据组数据个数)、AL(当前数据x) ; 出口参数:无PUSH AX

LEA BX, NUMBUF

MOV AL, CH

CBW

ADD BX, AX

POP AX MOV [BX], AL

RET

ADDNEW ENDP

MPSORT PROC FAR ; 数据组排序

MOV AL, NUMBUF

CMP AL, 1

JBE NOSORT ; 若只有一个元素,停止排序

CBW

MOV CX, AX

LEA SI, NUMBUF ; SI指向数据组首地址

ADD SI, CX ; SI指向数据组末地址

DEC CX ; 外循环次数 LP1:

; 外循环开始

PUSH CX

PUSH SI

MOV DL, 0 ; 交换标志置0

LP2: ; 内循环开始

MOV AL, [SI]

CMP AL, [SI - 1]

JAE NOXCHG

XCHG AL, [SI - 1] ; 交换操作

MOV [SI], AL

MOV DL, 1 ; 交换标志置1

NOXCHG:

DEC SI

LOOP LP2

POP SI

POP CX

CMP DL, 1

JNZ NOSORT ; 判断交换标志

LOOP LP1

NOSORT: RET

MPSORT ENDP

INT_OUT PROC FAR 输出数据组

MOV AL, NUMBUF

CBW

MOV CX, AX

MOV BL, 10H

LEA SI, NUMBUF + 1

PRINT:

MOV AL, [SI]

CALL OUTNUM

INC SI

MOV AH, 2

MOV DL, ' '

INT 21H

LOOP PRINT

RET

INT_OUT ENDP

OUTNUM PROC NEAR ; 将十进制数以十六进制输出

; 入口参数:AL(待转换的数据),BL(转换进制数16) ; 出口参数:无MOV AH, 0

DIV BL

PUSH AX

CMP AH, 10

ADD AH, 7

PNUM:

ADD AH, 30H

MOV DL, AH

POP AX

PUSH DX

CMP AL, 0

JZ OUTN

CALL OUTNUM

OUTN:

POP DX

MOV AH, 2

INT 21H

RET

OUTNUM ENDP

TIMCHK PROC FAR 设定并显示时间;设置显示器方式

MOV AH, 0

MOV AL, 3

MOV BL, 0

INT 10H ; 清屏

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 6 ; 行号

INT 10H ; 设置提示光标位置设置

MOV AH, 9

LEA DX, IN_TIM

INT 21H ; 时间串提示

MOV AH, 0AH

LEA DX, KEYBUF

INT 21H ; 输入时间串

MOV BL, 10

MOV AL,

KEYBUF + 2

SUB AL, '0'

MUL BL

ADD AL, KEYBUF + 3

SUB AL, '0'

CMP AL, 0

JB INVALID

CMP AL, 24

JAE INVALID ; 判断时有效性

MOV AL, KEYBUF + 5

SUB AL, '0'

MUL BL

ADD AL, KEYBUF + 6

SUB AL, '0'

CMP AL, 0

JB INVALID

CMP AL, 60 JAE INVALID ; 判断分有效性

MOV CL, AL

MOV AL, KEYBUF + 8

SUB AL, '0'

MUL BL

ADD AL, KEYBUF + 9

SUB AL, '0'

CMP AL, 0

JB INVALID

CMP AL, 60

JAE INVALID ; 判断秒有效性

MOV DH, AL

MOV DL, 0

MOV AH, 2DH

INT 21H ; 置系统时间

INVALID:

CALL TIME

RET

TIMCHK ENDP

TIME PROC ; 显示时间子程序 ;设置显示器方式

MOV AH, 0

MOV AL, 3;

MOV BL, 0;

INT 10H ; 清屏

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 10 ; 列号

MOV DH, 9 ; 行号

INT 10H ; 提示信息光标位置设置

MOV AH, 9

LEA DX, HINTSTR

INT 21H ; 输出提示信息

DISP1:

MOV AH, 2

MOV BH, 0 ; 页号

MOV DL, 72 ; 列号

MOV DH, 0 ; 行号

INT 10H ; 提示光标位置设置

MOV AH, 2CH ; 取系统时间,CH,CL,DH分别存放时/分/秒

INT 21H

MOV AL, CH ; 显示时

CALL SHOWNUM

MOV AH, 2

MOV DL, ':'

INT 21H

MOV AL, CL ; 显示分

CALL SHOWNUM

MOV AH, 2

MOV DL, ':'

INT 21H

MOV AL, DH ; 显示 : 秒

CALL SHOWNUM

MOV AH,02H ; 设置光标位置

MOV DX,090AH

MOV BH,0 INT 10H

MOV BX,0018H

RE: MOV CX,0FFFFH ; 延时

REA: LOOP REA

DEC BX

JNZ RE

MOV AH, 0BH

INT 16H

CMP AL, 0 ;

JE DISP1

JZ DISP1 ; 检查键盘状态

RET

TIME ENDP

SHOWNUM PROC

; 把AL中的数字以十进制输出 ; 入口参数:AL(待显示的数据) ; 出口参数:无

CBW

PUSH CX

PUSH DX

MOV CL, 10

DIV CL

ADD AH, '0'

MOV BH, AH

ADD AL, '0'

MOV AH, 2

MOV DL, AL

INT 21H

MOV DL, BH

INT 21H

POP DX

POP CX

RET SHOWNUM ENDP

CODE ENDS

END START

五、实验结果

主界面:

在主界面输入1后的结果:

在主界面输入2 后的结果:

在主界面输入3后的结果:

在主界面输入4后的结果:

六、实验体会

通过这次微机上机实验,我更清楚的知道了汇编程序在DOC系统中的应用,也更加熟悉了中断的各种操作与应用,从而加深了对课本上理论知识的理解,尤其是上课过程中对一些存在疑惑的地方进行上机验证,对一些常用程序也有了更深的了解。并且也学会了怎样将各个子程序整合成一个程序。现在上机课程就要结束了,虽然我们对汇编语言编写程序解决问题的能力掌握没有十分完全,但是还是了解了很多操作,可以解决一些基本问题。我想要学好汇编,还需花更多的时间去学习,去实践。

西电微机原理大作业

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

微机原理硬件设计综合作业 基于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、在微型计算机中,微处理器的主要功能是进行( )。 D A、算术运算 B、逻辑运算 C、算术、逻辑运算 D、算术、逻辑运算及全机的控制 2、Pentium I属于()位CPU C A、16 B、8 C、32 D、64 3、Intel 8086属于()位CPU A A、16 B、8 C、32 D、64 4、CPU与I/O设备间传送的信号通常有( ) D A、控制信息 B、状态信息 C、数据信息 D、以上三种都有 5、存储器用来存放计算机系统工作时所需要的信息,即( )。 D A、程序 B、数据 C、技术资料 D、程序和数据 6、运算器的核心部件是( )。 D A、加法器 B、累加寄存器 C、多路开关 D、算逻运算单元 二、填空 1、内存可分为2大类:随机存储器RAM 和 2、数据总线是向的,地址总线是向的。 3、计算机的五大部件是:、、、、输出设备 4、总线可分为三类:、、 5、存储程序工作原理最先由提出 6、在计算机内部,一切信息的存取、处理和传送都是以形式进行的。 1、只读存储器ROM 2、双、单 3、运算器、控制器、存储器、输入设备 4、地址总线、数据总线、控制总线 5、冯·诺依曼 6、二进制 三、简答 1、冯·诺依曼型计算机的特点是什么 (1).以二进制表示指令和数据 (2).程序和数据存放在存储器中,从存储器中取指令并执行 (3).由运算器、控制器、存储器、输入设备、输出设备构成计算机硬件系统。 一、选择 1、在机器数______中,零的表示形式是唯一的()。BD A、原码 B、补码 C、反码 D、移码 2、计算机内部表示带符号整数通常采用()。C A、原码 B、反码 C、补码 D、移码

微机原理上机

上机作业二 一.实验目的 1.熟练掌握汇编语言程序设计的方法及上机步骤。 2.掌握算术运算指令的应用。 3.掌握子程序的设计方法。 4.掌握DOS功能的调用方法。 三.沁仪器 586微机一台 四. 实验内容 编写程序求两个十进制数之和,并将和以十进制数的形式送屏慕显示。 编程要求与提示: [1]从键盘输入两个十进制数(如与),以二进制数形式存放在ADD1和ADD2为首址的存贮器单元,输入一个十进制数采用子程序形式。 [2]和以二进制数的形式存入SUM以下单元。 [3]将和送到屏幕显示采用子程序形式。 [4]实验步骤如下: a.用全屛幕编辑软件建立源程序。 b.用汇编程序对源程序进行汇编,形成目标程序。 c.用连接程序对目标程序进行连接形成可执行文件。 d.用DEBUG对连接通过的可执行程序进行调试。 五. 源程序 STACK SEGMENT STACK 'STACK' DW 100H DUP () TOP LABEL WORD STACK ENDS DATA SEGMENT FAKE DW 0 KEYBUFFER DB 100 DB DB 100 DUP()

BUF DB8DUP()「$ ADD1 DW Al DW ADD2 DW A2 DW SUM DW SI DW STRING1 DB 1 PLEASE input decimal data: $ 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 t AX LEA SP.TOP CALL INPUT1 CALL TRANS1OTO16 MOV ADD1,AX MOV Al.DX CALL DISPCR CALL INPUT1 CALL TRANS1OTO16 MOV ADD2,AX MOV A2.DX ? ?? CALL DISPCR MOV SUM,AX MOV Sl.DX ADD AX.ADD1 ADC DX,A1 MOV SUM,AX

西电微机原理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

微机原理与接口技术作业(含答案)剖析

浙江大学远程教育学院 《微机原理与接口技术》课程作业 姓名:学号: 年级:学习中心: 第2章P52 2.80C51单片机引脚有哪些第二功能? 第一功能第二功能 P0.0~P0.7 地址总线Ao~A7/数据总线D0~D7 P2.0~P2.7 地址总线A8~A15 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0外部中断0) P3.3 IINT1(外部中断1) P3.4 TO(定时器/计数器0的外部输入) P3.5 T1(定时器/计数器0的外部输出) P3.6 WR(外部数据存储器或I/O的写选通) P3.7 RD外部数据存储器或I/O的读选通) 4.80C51单片机的存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间?访问片内RAM和片外RAM的指令格式有何区别? 1、80C5l单片机采用哈佛结构,即将程序存储器和数据存储器截然分开,分别进行寻址。不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有较强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围都可达64 KB。 2、在物理上设有4个存储器空间 ·片内程序存储器; ·片外程序存储器; ·片内数据存储器;. ·片外数据存储器。 在逻辑上设有3个存储器地址空间 ●片内、片外统一的64 KB程序存储器地址空间。 ●片内256字节(80C52为384字节)数据存储器地址空间。 片内数据存储器空间在物理上又包含两部分: ●对于80C51型单片机,0~127字节为片内数据存储器空间;128~255字节为特殊 功能寄存器(SFR)空间(实际仅占用了20多个字节)。 ●对于80C52型单片机,O~127字节为片内数据存储器空间;128~255字节共128 个字节是数据存储器和特殊功能寄存器地址重叠空间。 片外64 KB的数据存储器地址空间。 3、在访问3个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选

微机原理上机

上机作业2 一.实验目的 1.熟练掌握汇编语言程序设计的方法及上机步骤。 2.掌握算术运算中,十进制数调整指令的应用。 3.掌握子程序的设计方法。 4.掌握DOS功能的调用方法。 二.实验仪器 586微机 1台 三.实验内容 2.有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次 序排列。 [1] 参加排序的数据及个数由自己定义。 [2] 要将排序前的数组和排序后的数组在屏幕上显示出来。 [3] 实验步骤 a. 用全屏幕编辑软件建立源程序 N=2 STACK SEGMENT STACK 'STACK' DW 100H DUP(00) TOP LABEL WORD STACK ENDS DATA SEGMENT DATABUF DW N DB N DUP(?) ORIGINAL DB 13,10,13,10,'THE ORIGINAL DATA:$' ORDERED DB 13,10,13,10,'THEORDERED DATA:$' 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,DATABUF LEA SI,DATABUF+2 MOV BL,18 MOV AL,13 L: MOV [SI],AL INC SI ADD AL,BL

LOOP L LEA DX,ORIGINAL MOV AH,9 INT 21H CALL DISPAL MOV CX,DATABUF DEC CX LEA SI,DATABUF+2 ADD SI,CX L1: PUSH CX PUSH SI L2: MOV AL,[SI] CMP AL,[SI-1] JBE NOXCHG XCHG AL,[SI-1] MOV [SI],AL NOXCHG: DEC SI LOOP L2 POP SI POP CX LOOP L1 LEA DX,ORDERED MOV AH,9 INT 21H 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,DATABUF+2 MOV CX,20 DISPAL2:

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

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

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

实验报告:(包括目的、方法、原理、结果或实验小节等)。 一、实验目的 掌握简单并行接口的工作原理及使用方法。 二、实验内容 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

微机原理作业答案

微机原理作业 1.8086C P U由哪两部分组成?它们的主要功能是什么? 答:8086CPU由总线接口单元(BIU)和指令执行单元(EU)组成。总线接口单元(BIU)的功能是:地址形成、取指令、指令排队、读/写操作数和总线控制。指令执行单元(EU)的功能是指令译码和指令执行。 2.微型计算机系统由微处理器、存储器和I/O接口等 组成。 3.8086CPU中的指令队列可存储6个字节的指令代码,当指令队列 至少空出 2 个字节时,BIU单元便自动将指令取到指令队列中; 4.8086系统中,1MB的存储空间分成两个存储体:偶地址存储体 和 奇地址存储体,各为512 字节。 5.8086系统中存储器采用什么结构?用什么信号来选中存储体? 答:8086存储器采用分体式结构:偶地址存储体和奇地址存储体,各为512K。用AO和BHE来选择存储体。当AO=0时,访问偶地址存储体;当BHE=0时,访问奇地址存储体;当AO=0,BHE=0时,访问两个存储体。 6.在8086CPU中,指令指针寄存器是 C 。 (A) BP (B) SP (C) IP (D) DI 7.8086CPU中的SP寄存器的位数是 B 。 (A) 8位(B) 16位(C) 20位(D) 24位 8.8086CPU中指令指针寄存器(IP)中存放的是 B 。 (A)指令(B)指令偏移地址(C)操作数(D)操作数偏移地址 9.若当前SS=3500H,SP=0800H,说明堆栈段在存储器中的物理地址(最 大),若此时入栈10个字节,SP内容是什么?若再出栈6个字节,SP为什么值?答:堆栈段的物理地址范围:35000H~357FFH

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

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

西电微机原理实验报告

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

微机原理习题集以及答案

第一部分 例题与习题 第1章 微型计算机基础 例 题 1.把十进制数转化为二进制数。P7 解:把十进制数转换成二进制数时,需要对一个数的整数部分和小数部分分别进行处理,得出结果后再合并。 整数部分:一般采用除2取余法 小数部分:一般采用乘2取整法 余数 低位 整数 高位 2 | 137 2 | 68 × 2 2 | 34 2 | 17 × 2 2 | 8 2 | 4 × 2 2 | 2 1 高位 低 位 (137)10=()2 10=2 所以,10=(.111)2 2.把二进制数转换为八进制数和十六进制数。P9 解:八进制、十六进制都是从二进制演变而来,三位二进制数对应一位八进制数,四位二进制数对应一位十六进制数,从二进制向八进制、十六进制转换时,把二进制数以小数点为界,对小数点前后的数分别分组进行处理,不足的位数用0补足,整数部分在高位补0,小数部分在低位补0。 (10 1)2=(010 100)2=8 (1 2=(0001 2=16 3.将八进制数转换为二进制数。P9 解:8=(010 100)2=2 4.X=,Y=-,求[X -Y]补,并判断是否有溢出P11 解:[X -Y]补=[X]补+[-Y]补 [X]补= [Y]补= [-Y]补= + -------------- 1 -------------- 0 -------------- 0 -------------- 1 -------------- 0 -------------- 0 -------------- 0 -------------- 1 ------------- 1 ------------- 1 ------------- 1

微机原理上机实验答案

实验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

西电微机原理上机

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:

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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循环右移四位

微机原理第3章习题与答案

习题 一、选择题 1.寻址方式指出了操作数的位置,一般来说_______。 A.立即寻址给出了操作数的地址 B.寄存器直接寻址的操作数在寄存器内,而指令给出了存储器 C.直接寻址直接给出了操作数本身 D.寄存器直接寻址的操作数包含在寄存器内,由指令指定寄存器的名称 答案:D 2.寄存器寻址方式中,操作数在_________。 A.通用寄存器 B.堆栈 C.内存单元 D.段寄存器 答案:A 3.寄存器间接寻址方式中,操作数在_________。 A.通用寄存器 B.堆栈 C.内存单元 D.段寄存器 答案:C 4.下列指令中的非法指令是______。 A.MOV[SI+BX],AX B.MOVCL,280 C.MOV[0260H],2346H D.MOVBX,[BX] 答案:B 5.设(SP)=0100H,(SS)=2000H,执行PUSHBP指令后,栈顶的物理地址是_____。 A.200FEH B.0102H C.20102H D.00FEH 答案:A 6.指令LEABX,TAB执行后,其结果是______。 A.将TAB中内容送BX B.将TAB的段基址送BX C.将TAB的偏移地址送BX D.将TAB所指单元的存储内容送BX 答案:C 7.下列正确的指令格式有______。 A.MOV[BX],1 B.MOVAL,0345H C.MOVES:PTR[CX],3 D.XLAT 答案:D 8.设(AX)=C544H,在执行指令ADDAH,AL之后,______。 A.CF=0,OF=0 B.CF=0,OF=1 C.CF=1,OF=0D,CF=1,OF=1 答案:C 9.若AL、BL中是压缩BCD数,且在执行ADDAL,BL之后,(AL)=0CH,CF=1,AF=0。再执行DAA后,(AL)=_____。 A.02H B.12H C.62H D.72H 答案:B 10.执行下列程序后AL的内容为_____。 MOVAL,25H SUBAL,71H DAS A.B4H B.43H C.54H D.67H

微机原理实验: 数据传送

实验二数据传送 一、实验目的 1.熟悉8086指令系统的数据传送指令及8086的寻址方式。 2.利用Emulator仿真器来调试汇编语言程序。 二、实验预习要求 1.复习8086指令系统中的数据传送类指令和8086的寻址方式。 2.按照题目要求预先编写好实验中的程序段。 三、实验任务 1.通过下述程序段的输入和执行来熟悉Emulator仿真器的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下: MOV BL,08H MOV CL,BL MOV AX,03FFH MOV BX,AX MOV DS:[0020H],BX 2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下: MOV AX,0102H MOV BX,0304H MOV CX,0506H MOV DX,0708H PUSH AX PUSH BX PUSH CX PUSH DX 出栈程序段请自行编写(用不同的出栈顺序)。

3.指出下列指令的错误并加以改正,上机验证之。 (1) MOV [BX],[SI] (2) MOV AH,BX (3) MOV AX,[SI][DI] (4) MOV BYTE PTR[BX],2000H (5) MOV CS,AX (6) MOV DS,2000H 4.①编写程序设置各寄存器及存储单元为如下内容: (BX)=0010H,(SI)=0001H (10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H (10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH ②根据①中设置说明下列各条指令执行完后AX寄存器中的内容,并上机验证。 (1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[0120H] (4) MOV AX,[BX] (5) MOV AX,0110H[BX] (6) MOV AX,[BX][SI] (7) MOV AX,0110H[BX][SI] 5. 将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。 6. 设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:1000H 单元中的内容为3333H。将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:1000H单元中的内容进行交换。试编写程序段,并上机验证结果。 7.设(DS)=1000H,(ES)=2000H,有关存储器的内容如图1.5所示。要求将DS段的内容传送到AX寄存器,ES段的内容传送到BX寄存器,试编写程序段。

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

经典微机原理作业与答案第三章

8086第三章作业 3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址 (1)1000H 10000H-1FFFFH (2)1234H 12340H-2233FH (3)E000H E0000H-EFFFFH (4)AB00H AB000H-BAFFFH 3-12对于下列CS:IP组合,计算出要执行的下条指令存储器地址。 (1)CS=1000H和IP=2000H 答:下条指令存储器地址:12000H (2)CS=2400H和IP=1A00H 答:下条指令存储器地址:25A00H (3)CS=1A00H和IP=B000H 答:下条指令存储器地址:25000H (4)CS=3456H和IP=ABCDH 答:下条指令存储器地址:3F12DH 3-37 指出下列指令源操作数的寻址方式 (1)MOV AX,1200H;立即数寻址 (2)MOV BX,[1200H];直接寻址 (3)MOV BX,[SI];变址寻址 (4)MOV BX,[BX+SI+1200];相对基变址寻址 (5)MOV [BX+SI],AL;寄存器寻址 (6)ADD AX,[BX+DI+20H];相对基变址寻址 (7)MUL BL ;寄存器寻址 (8)JMP BX ;间接寻址 (9)IN AL,DX ;寄存器间接寻址 (10)INC WORD PTR[BP+50H] ;相对基址寻址 小结:虽然对存储器的访问指令、输入/输出指令(IN指令和OUT指令)、跳转指令(JMP指令)都有直接寻址和间接寻址,但是形式是有很大差别的:1.直接寻址: (1)对于存储器的访问用方括号括起来的二进制数, 如:MOV BX,[1200H] (2)对于输入/输出指令(IN指令和OUT指令)用二进制数 如:IN AX,8FH 又如: OUT 78H,AL (3)对于跳转指令(JMP指令)是以目标标号为直接地址的 如: JMP ADDR1 2.间接寻址: (1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址 如:MOV AX,[BP] (2)对于输入/输出指令用DX做间接寻址寄存器

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

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

相关文档
相关文档 最新文档