微机原理作业与答案

微机原理作业与答案
微机原理作业与答案

第四章汇编语言程序设计

4-2 下列程序执行后,寄存器AX,BX,CX的内容分别是多少?

D SEGMENT AT 0202H;定位数据段地址

ORG 0202H ;定位偏移地址

DA_WORD DW 20H

MOV AX,DA_WORD ;(AX)=0020H

MOV BX,OFFSET DA_WORD ;(BX)=0202H

MOV CL,BYTE PTR DA_WORD ;(CL)=20H(将变量DA_WORD的属性改变为字节型)MOV CH,TYPE DA_WORD ;(CH)=2(变量类型数值)

;(CX)=0220H

4-4 试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放在CHAR2开始的单元中(题目要求:不改变CHAR1的内容)

方法1,小写字母转换一个输出显示一个,前3种方法均使用了AL寄存器

D SEGMENT

CHAR1 DB "abcdefghijklmnopqrstuvwxyz"

N EQU $-CHAR1;变量必须先定义后使用,而不能相反

CHAR2 DB N DUP(0) ; ;不能把此句与上一句对调,CHAR2 DB $-CHAR1有

;的同学这样写,错在哪

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S ;ASSUME是伪指令,后面不能写冒号

START: MOV AX,D

MOV DS,AX

;MOV ES,AX ;只要用到串操作指令且DI

LEA SI,CHAR1 ;MOV SI,OFFSET CHAR1

LEA DI,CHAR2 ; MOV DI,OFFSET CHAR2

MOV CX,N ;$-CHAR1,不可以

AGAIN:MOV AL,[SI]

SUB AL,20H ;AND AL,5FH 有的同学是这样实现的

MOV [DI],AL

MOV DL,AL

MOV AH,2

INT 21H ;从屏幕显示

INC SI

INC DI

LOOP AGAIN

MOV AH,4CH

INT 21H ; ;不是必须的

C ENDS

END START

方法2:使用通用数据传送指令MOV

D SEGMENT

CHAR1 DB ‘abcdefghijklmnopqrstuvwxyz’

N EQU $-CHAR1;变量必须先定义后使用,而不能相反

CHAR2 DB N DUP(0);不能把此句与上一句对调

D ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS ;P126(代码段和堆栈段是不可少的)

C SEGMENT

ASSUME CS:C ,DS:D ,SS:S

START: MOV AX,D

MOV DS,AX

MOV ES,AX ;只要用到串操作指令且DI

MOV SI,0 ;LEA SI,CHAR1

MOV DI,0 ;LEA DI,CHAR2

MOV CX,N

AGAIN: MOV AL,CHAR1[SI] ; MOV AL,[SI]

SUB AL,20H

MOV CHAR2[DI],AL ; MOV [DI],AL

INC SI

INC DI LOOP AGAIN

MOV AH,4CH

INT 21H ;不是必须的

C ENDS

END START

第3种方法:使用串的读写指令LODSB STOSB

D SEGMENT

CHAR1 DB ‘abcdef’

N EQU $-CHAR1

CHAR2 DB $-CHAR1 DUP(0) D ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS ;P126(代码段和堆栈段是不可少的)

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START: MOV AX,D

MOV DS,AX

MOV ES,AX

MOV SI,0 ;LEA SI,CHAR1

MOV DI,0 ;LEA DI,CHAR2

MOV CX,N

CLD ;不写(隐含)也是0(递增)但不能STD

AGAIN: LODSB ;执行一次,隐含修改SI

SUB AL,32

STOSB ;MOV [DI],AL;执行一次, 隐含修改DI INC DI

LOOP AGAIN ;LOOP指令只修改CX,不管SI,DI

MOV AH,4CH

INT 21H ;不是必须的

C ENDS

END START

第四种方法2006级,没有显示使用MOVSB指令

D SEGMENT

CHAR1 DB "abcdefghijklmnopqrstuvwxyz"

N EQU $-CHAR1

CHAR2 DB N DUP(0)

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START:

MOV AX,D

MOV DS,AX

MOV ES,AX

LEA SI,CHAR1

LEA DI,CHAR2

MOV CX,N

AGAIN:MOVSB ; SUB [SI],20H

DEC DI ; MOVSB

SUB BYTE PTR[DI],20H ;LOOP ADAIN 错在哪里?结果如何?

INC DI

LOOP AGAIN

MOV AH,4CH

INT 21H

C ENDS

END START

方法5: 只用一个地址指针SI

D SEGMENT

CHAR1 DB "abcdefghijklmnopqrstuvwxyz"

N EQU $-CHAR1

CHAR2 DB N DUP(0) D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START:

MOV AX,D

MOV DS,AX

MOV ES,AX

MOV SI,0

MOV CX,N

AGAIN:MOV AL,CHAR1[SI] ;只用一个地址指针,SI[CHAR1]是错误的

SUB AL,20H

MOV CHAR2[SI],AL

INC SI

LOOP AGAIN

int 3

MOV AH,4CH

INT 21H

C ENDS

END START

有的同学按数据是由键盘录入的来考虑的,也可行,程序中还有不少问题

方法6:由键盘输入小写字母再转换输出,回车符也占一个字节,输入需要小写转换成大写字母的内容从输入串的第3个元素开始

D SEGMENT

A DB"CHAR1",0DH,0AH,"$"

B DB"CHAR2",0DH,0AH,"$"

CHAR1 DB 11,?,11 DUP(0);准备输入10个小写字母

CHAR2 DB 10 DUP(0)

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START:

MOV AX,D

MOV DS,AX

MOV ES,AX

MOV DX,OFFSET A

MOV AH,9

INT 21H

LEA DX,CHAR1

MOV AH,0AH

INT 21H ;由键盘输入字符串,10个字母(显示),1个回车,共11个字节

LEA SI,CHAR1[2]

LEA DI,CHAR2

MOV CX,10 ;需要转换的字符长度为10个字节

AGAIN:MOV AL,[SI]

SUB AL,20H

MOV [DI],AL

INC SI

INC DI

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

MOV BYTE PTR[DI],0DH

INC DI

MOV BYTE PTR[DI],0AH

INC DI

MOV BYTE PTR[DI],'$' ;必须指明数据类型

MOV DX,OFFSET CHAR2

MOV AH,9

INT 21H ;输出'$'结尾的大写字母字符串

int 3

MOV AH,4CH

INT 21H

C ENDS

END START

4-6在BUF地址处起,存放有100个字节的字符串,设其中有一个以上的“A”字符,编程查找出第一个“A”字符相对起始地址的距离,并将其存入LEN单元。

方法1,经过调试,数据串长N

D SEGMENT

BUF DB 'qasdA%^9F26HsdfhA$#12345678'

DB 'DFGH234546JII2334JI5467OPPAVG'

DB 'ASDFG45667RTY' ; 必须写实际的

N EQU $-BUF;有同学写成N EQU BUF

LEN DW 0;为变量LEN保留一个字,必须先定义后使用,LEN DW ?

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START: MOV AX,D

MOV DS,AX

MOV ES,AX ;这条指令是必须的

MOV CX,N

LEA DI,BUF ;MOV DI,OFFSET BUF

MOV AL,41H ;MOV AL,‘A’

REPNE SCASB ;有的同学用的比较指令

DEC DI ;不必判断是否找到,一定找到

MOV LEN,DI ;MOV LEN,[DI]错在哪里? MOV LEN,[DI-1]或MOV

LEN,BYTE PTR[DI]错在哪里 ,MOV LEN,OFFSET BUF[DI-1]对不对 或

LEA LEN,BUF[DI-1]

MOV AH,4CH

INT 21H

C ENDS

END START

4-8 某程序设置的数据区如下所示,画出该数据段内容在内存中的存放形式(要

用十六进制补码表示,按字节组织)

DATA SEGMENT DB1 DB 12H,34H,0,56H DW1 DW 78H,90H,0AB46H,1234H ADR1 DW DB1 ;取变量DB1的偏移地址 ADR2 DW DW1 ;;取变量DW1的偏移地址

AAA DW $-DB1 ;计算当前变量到DB1变量的字节数 BUF DB 5 DUP(0) DATA ENDS

有的同学认为0AB46H 是负数,并取了它的补码 2

0000H DB1 0004H DW1 000CH ADR1 000EH ADR2 0010H AAA 0012H BUF

4-10 以BUF1和BUF2开头的2个字符串,其长度均为LEN,试编程实现:

(1)将BUF1开头的字符串送到BUF2开始的内存空间。(2)将BUF1开始的内存空间全部清零。

经过调试的:方法1:数据段与附加段重叠,利用MOVSB指令实现数据传的复制

D SEGMENT

D1 DB 'BUF1QWE233459JKGHGFHGF';看清题目要求,写出实际内容对存储

器初始化,分配内存空间,不能偷懒LEN DB $-D1;有同学写成N EQU LEN

D2 DB ' BUF2ASD33459JKGHGFHGFI';长度与D1相同

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

STAR:

MOV AX,D

MOV DS,AX

MOV ES,AX ;附加段与数据段重叠,是允许的

LEA SI,D1

LEA DI,D2

MOV CX,LEN

REP MOVSB

LEA DI,D1

MOV CX,LEN ;这条语句不能少

MOV AL,00H ;MOV AX,0错在哪

REP STOSB

MOV AH,4CH

INT 21H

C ENDS

END STAR

经过调试的:方法2;数据段与附加段分开,串读一个写一个实现数据的传送,再利用串写指令使指定存储区清零

D SEGMENT

D1 DB 'BUF1qasdA%^9F26HsdfhA$#12345678'

LEN EQU $-D1

D ENDS

E SEGMENT

D2 DB "BUF2abcdefghijklmnopqrstuvwxyz0" ; 必须写实际的,

;与D1长度相同

E ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START: MOV AX,D

MOV DS,AX

MOV AX,E

MOV ES,AX

MOV CX,N

LEA SI,D1 ;MOV SI,OFFSET D1

LEA DI,D2

LP: LODSB

STOSB

LOOP LP ;LOOP只是使CX减1,不改变SI DI

LEA DI,D1

MOV CX,N ;这条语句不能少

MOV AL,00H

REP STOSB

MOV AH,4CH

INT 21H

C ENDS

END START

第3种做法:传送一个字节清零一个字节,再向下一个字节进行

D SEGMENT

D1 DB 'BUF1QWE233459JKGHGFHGF';看清题目要求,写出实际内容对存储

器初始化,分配内存空间,不能偷懒LEN DB $-D1

D2 DB ' BUF2ASD33459JKGHGFHGFI';长度与D1相同

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

STAR: MOV AX,D

MOV DS,AX

MOV ES,AX

LEA SI,D1

LEA DI,D2

MOV CX,LEN

NEXT:MOV AL,[SI]

MOV [DI],AL

MOV [SI],00H

INC SI

INC DI

LOOP NEXT

MOV AH,4CH

INT 21H

CSEG ENDS

END STAR

方法4;4-10-4从键盘输入初值,并显示

D SEGMENT

BUF1 DB 101,?,101 DUP(0)

BUF2 DB 100 DUP(0)

BUF3 DB 100 DUP(0)

A D

B 'BUF1',0DH,0AH,'$'

B DB 'BUF2',0DH,0AH,'$'

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START: MOV AX,D

MOV DS,AX

MOV ES,AX

MOV DX,OFFSET A

MOV AH,9

INT 21H ;输出显示'BUF1'

MOV DX,OFFSET BUF1

MOV AH,0AH

INT 21H ;键盘输入字符串

MOV CL,[BUF1+1] ;实际输入的字符串长度送CL,取相应单元的内容不需加方括号

MOV CH,0

PUSH CX

CLD

LEA SI,BUF1+2

LEA DI,BUF2

REP MOVSB ;将输入的字符串传送到BUF2

MOV BYTE PTR[DI],0DH

INC DI

MOV BYTE PTR[DI],0AH

INC DI

MOV BYTE PTR[DI],'$';在BUF2末尾输入回车换行和‘$'

MOV SI,OFFSET BUF3

MOV DI,OFFSET BUF1+2;取变量的偏移地址,不能加方括号

POP CX

REP MOVSB ;用BUF3替换BUF1

MOV BYTE PTR[DI],0DH

INC DI

MOV BYTE PTR[DI],0AH

INC DI

MOV BYTE PTR[DI],'$';在BUF1末尾输入回车换行和‘$'

MOV DX,OFFSET A

MOV AH,9

INT 21H ;输出显示’BUF1'

MOV DX,OFFSET BUF1+2

MOV AH,9

INT 21H ;输出空格,因为BUF1已经清零了

MOV DX,OFFSET B

MOV AH,9

INT 21H ;输出显示’BUF2'

MOV DX,OFFSET BUF2

MOV AH,9

INT 21H ;输出BUF2,即键盘输入的内容

MOV AH,4CH

INT 21H

C ENDS

END START

4-14 试编写一程序,找出BUF数据区中带符号数的最大数和最小数,把最大数放

到BH单元,把最小数放到BL单元。

D SEGMENT

BUF DB 5,90,-45,100,99,………,-12

N EQU $-BUF

D ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START: MOV AX,D

MOV DS,AX

MOV CX,N-1

MOV SI,0

MOV BH,BUF[SI]

MOV BL,BUF[SI]

AGAIN: INC SI

CMP BH,BUF[SI]

JGE NEXT ;JAE NEXT错(无符号数)

MOV BH,BUF[SI]

ABC: LOOP AGAIN ;这句不要也行

NEXT: CMP BL,BUF[SI]

JLE ABC

MOV BL,BUF[SI]

LOOP AGAIN

C ENDS

END START

4-16 若AL中的内容为2位压缩的BCD数68H,试编程:(1)将其拆开成非压缩的BCD数,高低位分别存入BH和BL中。

(2)将上述要求的2位BCD码变换成对应的ASCII码,并且存入CH和CL中。

方法1,经过调试的

D SEGMENT

D1 DB 1,2,3

D ENDS

S SEGMENT STACK

DB 10 DUP(?)

S ENDS

C SEGMENT

ASSUME CS:C,SS:S,DS:D

STAR:MOV AX,D

MOV DS,AX

MOV AL,68H

MOV BH,AL

AND AL,0FH

MOV BL,AL ;(BL)是低位非压缩的BCD码

AND BH,0F0H ;(BH)将是高位非压缩的BCD码

MOV CL,4

SHR BH,CL ; (BH)是高位非压缩的BCD码

MOV CL,BL

ADD CL,30H ;(CL)是低位ASCII码

MOV CH,BH

ADD CH,30H ; (CH)是高位ASCII码

MOV AH,4CH

INT 21H

C ENDS

END STAR

方法2

D SEGMENT

D1 DB 1,2,3

D ENDS

S SEGMENT STACK

DB 10 DUP(?)

S ENDS

C SEGMENT

ASSUME CS:C,SS:S,DS:D

STAR:MOV AX,D

MOV DS,AX

MOV SI,OFFSET D1

MOV DL,68H

MOV AL,68H

AND AL,0FH

MUL BYTE PTR[SI]

AAM ;乘法的ASCII码调整指令,P99

MOV BL,AL

MOV BH,DL

AND BH,0F0H

MOV CL,4

SHR BH,CL

MOV AL,BH

MUL BYTE PTR[SI]

AAM

MOV BH,AL

MOV CL,BL

ADD CL,30H

MOV CH,BH

ADD CH,30H

C ENDS

END STAR

4-18试用子程序结构编写一程序:从键盘输入一个2位十进制的月份数(01~12),然后显示出相应的英文缩写名。

提示:根据题目要求实现的功能,可编写用一个主程序MAIN分别调用几个子程序。

(1) INPUT从键盘接收一个2位数,并把它转换为对应的二进制数。

(2) LOCATE 把输入的月份数与其英文缩写名(如JAN,FEB,MAR,APP,MAY,JUN等)对应起来,制成一个字符表以便查找。

(3) DISPLAY 将找到的缩写字母在屏幕上显示出来,显示可用DOS所提供的显示功能(INT 21H的09号功能)。

方法1:与方法2的不同主要在数据表的制定

D SEGMENT

D1 DB "Please input month from the keyboad",0DH,0AH,"$"

D2 DB 3, ?,3 DUP(?);分配键盘输入缓冲区,回车符占一个字节,但

实际输入的字符数中不包含它,即输入2位数至少需预留3个字节的空间,输入完成后,实际输入的字符数为2

D3 DB "ERROR",0DH,0AH,"$"

MONTH0 DB "JAN",0DH,0AH,"$"

DB "FEB" ,0DH,0AH,"$"

DB "MAR" ,0DH,0AH,"$"

DB "APP" ,0DH,0AH,"$"

DB "MAY" ,0DH,0AH,"$"

DB "JUN" ,0DH,0AH,"$"

DB "JUL" ,0DH,0AH,"$"

DB "AUG" ,0DH,0AH,"$"

DB "SEP" ,0DH,0AH,"$"

DB "OCT" ,0DH,0AH,"$"

DB "NOV" ,0DH,0AH,"$"

DB "DEC" ,0DH,0AH,"$"

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START:CLD

MOV AX,D

MOV DS,AX

CALL INPUT

CALL LOCATE

CALL DISPLAY

MOV AH,4CH

INT 21H

INPUT PROC NEAR

LEA DX, D1 ;将D1表示的相对地址送DX

MOV AH,9

INT 21H ;显示‘Please input month from the keyboad’并换行

ww2:LEA DX,D2 ;输入月份

MOV AH,0AH

INT 21H

LEA DI,D2 ;将D2表示的相对地址送DI

CMP byte ptr [DI+1],2 JNE ww2 ;输入的如果不是二位数,是错误

MOV AH,[DI+2];输入的月份高字节(十位数)

MOV AL,[DI+3];输入的月份低字节(个位数)

XOR AX,3030H ;将ASCII码变成BCD码

MOV BX,AX

MOV AL,BH

mov dl,0ah

MUL dl ;变成二进制数

MOV BH,AL

MOV AL,BL ;输入的月份低字节(个位数)

ADD AL,BH ;AL=1-12

RET ;是必须的

INPUT ENDP ;是必须的

LOCATE PROC NEAR

DEC AL

CMP AL,0CH

JNC ERROR ;≥12(正确的情况应该是0-11),输入错误

MOV BL,06H

MUL BL

LEA SI,MONTH0

ADD SI,AX

MOV DX,SI;制成一个字符表以便查找。

RET

ERROR:LEA DX,D3 ;将D3表示的相对地址送DX

RET

LOCATE ENDP

DISPLAY PROC NEAR

MOV AH,09H;将找到的缩写字母在屏幕上显示出来

INT 21H

RET

DISPLAY ENDP

C ENDS

END START

方法2:数据表的制定与方法1有所不同

D SEGMENT

D1 DB "Please input month from the keyboad",0DH,0AH,"$" D2 DB 4, ?,3 DUP(?) ;准备接收键盘输入,只输入2个字符,为什么必须设定最大输入字符数为3,算回车符吗?

D3 DB "ERROR",0DH,0AH,"$"

MONTH1 DB 01H

DB "JAN",0DH,0AH,"$"

MONTH2 DB 02H

DB "FEB" ,0DH,0AH,"$"

MONTH3 DB 03H

DB "MAR" ,0DH,0AH,"$"

MONTH4 DB 04H

DB "APP" ,0DH,0AH,"$"

MONTH5 DB 05H

DB "MAY" ,0DH,0AH,"$"

MONTH6 DB 06H

DB "JUN" ,0DH,0AH,"$"

MONTH7 DB 07H

DB "JUL" ,0DH,0AH,"$"

MONTH8 DB 08H

DB "AUG" ,0DH,0AH,"$"

MONTH9 DB 09H

DB "SEP" ,0DH,0AH,"$"

MONTH10 DB 0AH

DB "OCT" ,0DH,0AH,"$"

MONTH11 DB 0BH

DB "NOV" ,0DH,0AH,"$"

MONTH12 DB 0CH

DB "DEC" ,0DH,0AH,"$"

D ENDS

S SEGMENT STACK

DB 200 DUP(0)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,SS:S

START:CLD

MOV AX,D

MOV DS,AX

CALL INPUT

CALL LOCATE

CALL DISPLAY

MOV AH,4CH

INT 21H

INPUT PROC NEAR

LEA DX, D1 ;将D1表示的相对地址送DX

CALL DISPLAY

;MOV AH,9

;INT 21H ;显示‘Please input month from the keyboad’并

换行

ww2:LEA DX,D2 ;输入月份

MOV AH,0AH

INT 21H

LEA DI,D2 ;将D2表示的相对地址送DI

CMP byte ptr [DI+1],2 JNE ww2 ;输入的如果不是二位数,是错误

MOV AH,[DI+2];输入的月份高字节(十位数)

MOV AL,[DI+3];输入的月份低字节(个位数)

XOR AX,3030H ;将ASCII码变成BCD码,高位是1或0

MOV BX,AX

MOV AL,BH

mov dl,0ah

MUL dl ;变成二进制数

MOV BH,AL

MOV AL,BL ;输入的月份低字节(个位数)

ADD AL,BH ;AL中为1-12

RET

INPUT ENDP

LOCATE PROC NEAR

;DEC AL

CMP AL,0DH

JNC ERROR ;≥13,输入错误

LEA DI,MONTH1

BJ: CMP AL,[DI]

JZ DONE

ADD DI,7

JMP BJ

;MOV BL,06H

;MUL BL

;LEA SI,MONTH0

;ADD SI,Ax

;MOV DX,SI;制成一个字符表以便查找。

; RET

DONE: INC DI

MOV DX,DI ;将D3表示的相对地址送DX

JMP DONE1

ERROR:LEA DX,D3

DONE1: RET

LOCATE ENDP

DISPLAY PROC NEAR

MOV AH,09H;将找到的缩写字母在屏幕上显示出来

INT 21H

RET

DISPLAY ENDP

C ENDS

END START

4.20 试编程:从键盘输入同学的姓名Mr.ABC或Mrs.XYZ,当按动任意一个键时,屏幕上将显示出

“Welcome Mr.ABC”或“Welcome Mrs.XYZ”

方法1,使用子程序

D SEGMENT

D1 DB "Please input name from the keyboard",0dh,0ah,"$"

D2 db 20,?,20 dup(?)

D3 DB "Welcome Mr. ABC",0DH,0AH,"$"

D4 DB "Welcome Mrs. XYZ",0DH,0AH,"$"

D5 DB "Please input again",0DH,0AH,"$"

D ENDS

S SEGMENT STACK

DB 200 DUP(?)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,ES:D

STAR:MOV AX,D

MOV DS,AX

CALL INPUT

CALL DISPLAY

MOV AH,4CH

INT 21H

INPUT PROC NEAR

LEA DX,D1

CALL DISPLAY

WW:LEA DX,D2

MOV AH,0AH

INT 21H

LEA DI,D2

CMP BYTE PTR[DI+1],6

JZ NEXT0

CMP BYTE PTR[DI+1],7

JZ NEXT1

LEA DX,D5

CALL DISPLAY

JMP WW

NEXT0:LEA DX,D3

JMP DONE

;CALL DISPLAY;去掉,否则显示两遍

NEXT1:LEA DX,D4

;CALL DISPLAY

DONE:RET

INPUT ENDP

DISPLAY PROC NEAR

MOV AH,09H

INT 21H

RET

DISPLAY ENDP

C ENDS

END STAR

方法2

D SEGMENT

D1 DB "Mr. ABC"

N EQU $-D1

D2 DB "Mrs. XYZ"

N1 EQU $-D2

D3 DB "Welcome Mr. ABC",0DH,0AH,"$"

D4 DB "Welcome Mrs. XYZ",0DH,0AH,"$"

D5 DB 20

DB ?

DB 20 DUP(?)

D ENDS

S SEGMENT STACK

DB 200 DUP(?)

S ENDS

C SEGMENT

ASSUME CS:C,DS:D,ES:D

STAR:MOV AX,D

MOV DS,AX

MOV ES,AX

LEA DX,D5

MOV AH,0AH

INT 21H ;从键盘输入,输入缓冲区D5

LEA DI,D5 ;输入字符长度和“Mr. ABC”字符串长度比较

CMP BYTE PTR[DI+1],N

JNE LAST ;不相等,转LAST

LEA DX,D3 ;相等,输出"Welcome Mr. ABC"

MOV AH,9

INT 21H

LAST: LEA DI,D5;输入字符串长度和“Mrs. XYZ”字符串长度比较 CMP BYTE PTR[DI+1],N1

JNE LAST1

LEA DX,D4 ;相等,输出"Welcome Mrs. XYZ"

MOV AH,9

INT 21H

JMP LAST1

LAST1:MOV AH,4CH

INT 21H

C ENDS

END STAR

注意:第三章作业和第四章作业的要求区别:

第三章作业是编写程序段,不必按段结构写;

第四章作业是编写程序,必须按段结构写

微机原理及应用试题库(附答案)

《微机原理及应用》试题库 1. 8086和8088的引脚信号中, D 为地址锁存允许信号引脚。 A.CLK B.INTR C.NMI D.ALE 2. 下面的哪项是有效标识符: B A . 4LOOP: B. DELAYIS: C. MAIN A/B: D. GAMA$1: 3. 如图所示的三态输出电路,当 A 时,V B≈V DD。 A. E(ENABLE)=1, A=1 B. E(ENABLE)=1, A=0 C. E(ENABLE)=0, A=1 D. E(ENABLE)=0, A=0 4. 设(SS)=2000H,(SP)=0100H,(AX)=2107H,则执行指令PUSH AX 后,存放数据21H的物理地址是 D 。 A. 20102H B. 20101H C. 200FEH D. 200FFH 5. 汇编语言中,为了便于对变量的访问, 它常常以变量名的形式出现在程序中, 可以认为它是存放数据存储单元的 A 。 A.符号地址B.物理地址C.偏移地址D.逻辑地址 6. 下列四个寄存器中,不能用来作为间接寻址方式的寄存器是 A 。 A. CX B. BX C. BP D. DI (C)7. 执行下列程序段: MOV AX,0 MOV BX,1 MOV CX,100 AA:ADD AX,BX INC BX LOOP AA HLT 执行后的结果:(AX)= ,(BX)= 。 A. 5050,99 B. 2500,100 C. 5050,101 D. 2550,102 8. 假设V1和V2是用DW定义的变量,下列指令中正确的是 A 。 A.MOV V1, 20H B.MOV V1, V2 C.MOV AL, V1 D.MOV 2000H, V2 9. – 49D的二进制补码为 A 。

微机原理课后作业答案第五版

第一章 6、[+42]原=00101010B=[+42]反=[+42]补 [-42]原 [-42]反 [-42]补 [+85]原=01010101B=[+85]反=[+85]补 [-85]原 [-85]反 [-85]补 10、微型计算机基本结构框图 微处理器通过一组总线(Bus)与存储器和I/O接口相连,根据指令的控制,选中并控制它们。微处理器的工作:控制它与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。 存储器用来存放数据和指令,其内容以二进制表示。每个单元可存8位(1字节)二进制信息。 输入——将原始数据和程序传送到计算机。 输出——将计算机处理好的数据以各种形式(数字、字母、文字、图形、图像和声音等)送到外部。 接口电路是主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。 总线:从CPU和各I/O接口芯片的内部各功能电路的连接,到计算机系统内部的各部件间的数据传送和通信,乃至计算机主板与适配器卡的连接,以及计算机与外部设备间的连接,都要通过总线(Bus)来实现。 13、8086有20根地址线A19~A0,最大可寻址220=1048576字节单元,即1MB;80386有32根地址线,可寻址232=4GB。8086有16根数据线,80386有32根数据线。

1、8086外部有16根数据总线,可并行传送16位数据; 具有20根地址总线,能直接寻址220=1MB的内存空间; 用低16位地址线访问I/O端口,可访问216=64K个I/O端口。 另外,8088只有8根数据总线 2、8086 CPU由两部分组成:总线接口单元(Bus Interface Unit,BIU) BIU负责CPU与内存和I/O端口间的数据交换: BIU先从指定内存单元中取出指令,送到指令队列中排队,等待执行。 执行指令时所需的操作数,也可由BIU从指定的内存单元或I/O端口中获取,再送到EU去执行。 执行完指令后,可通过BIU将数据传送到内存或I/O端口中。 指令执行单元(Execution Unit,EU) EU负责执行指令: 它先从BIU的指令队列中取出指令,送到EU控制器,经译码分析后执行指令。EU的算术逻辑单元(Arithmetic Logic Unit,ALU)完成各种运算。 6、见书P28-29。 7.(1) 1200:3500H=1200H×16+3500H=15500H (2) FF00:0458H=FF00H×16+0458H=FF458H (3) 3A60:0100H=3A80H×16+0100H=3A700H 8、(1)段起始地址 1200H×16=12000H,结束地址 1200H×16+FFFFH=21FFFH (2)段起始地址 3F05H×16=3F050H,结束地址 3F05H×16+FFFFH=4F04FH (3)段起始地址 0FFEH×16=0FFE0H,结束地址 0FFEH×16+FFFFH=1FFD0H 9、3456H×16+0210H=34770H 11、堆栈地址范围:2000:0000H~2000H(0300H-1),即20000H~202FFH。执行 两条PUSH指令后,SS:SP=2000:02FCH,再执行1条PUSH指令后,SS: SP=2000:02FAH。 12、(2000H)=3AH, (2001H)=28H, (2002H)=56H, (2003H)=4FH 从2000H单元取出一个字数据需要1次操作,数据是 283AH; 从2001H单元取出一个字数据需要2次操作,数据是 5628H; 17、CPU读写一次存储器或I/O端口的时间叫总线周期。1个总线周期需要4个系统时钟周期(T1~T4)。8086-2的时钟频率为8MHz,则一个T周期为125ns,一个总线周期为500ns,则CPU每秒最多可以执行200万条指令。

吉大18年9月《微机原理及应用》作业考核试题

------------------------------------------------------------------------------------------------------------------------------ (判断题) 1: 8086CPU在读/写总线周期的T3状态结束对READY线采样,如果READY为低电平,则在T3与T4状态之间插入等待状态TW。( ) A: 错误 B: 正确 正确答案: (判断题) 2: A/D转换器是将数字量变成模拟量的器件() A: 错误 B: 正确 正确答案: (判断题) 3: 8086/8088CPU的复位后开始执行的第一条指令的地址为FFFFH。() A: 错误 B: 正确 正确答案: (判断题) 4: 采用直接寻址输入/输出指令的最大端口地址为0FFH。() A: 错误 B: 正确 正确答案: (判断题) 5: DMA控制器8237A现行字节数寄存器的值减到0时,终止计数。() A: 错误 B: 正确 正确答案: (多选题) 1: 常用的输入设备有( ) A: 键盘 B: 鼠标 C: 触摸屏 D: 显示器 正确答案: (多选题) 2: 下列指令中,( )的源操作数采用的是直接寻址。 A: MOV AL,[23H] B: MOV DX,AX C: MOV AL,0FFH D: IN AL,23H 正确答案: (多选题) 3: 若需将数据段中的源串传送到附加段的目的串,可用的指令有( ) A: MOV B: MOVS C: SCAS D: LODS和STOS 正确答案: (单选题) 1: 8086CPU在执行MOVAL,[BX]指令的总线周期内,若BX存放的内容为1011H,则BHE和A0的状态是()。 A: 0,0 B: 0,1

微机原理及应用实验(题目)

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。

微机原理及应用实验

实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单

五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。

实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。

微机原理及应用 第2章 习题及答案

CH02 8086/8088指令系统 习题与思考题 1.假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式?源操作数在哪里?如在存储器中请写出其物理地址是多少? (1)MOV AX,0ABH (2)MOV AX,[100H] (3)MOV AX,VAL (4)MOV BX,[SI] (5)MOV AL,VAL[BX] (6)MOV CL,[BX][SI] (7)MOV VAL[SI],BX (8)MOV [BP][SI],100 解答: (1)MOV AX,0ABH 寻址方式:立即寻址;源操作数在数据线上;物理地址:无 (2)MOV AX,[100H] 寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+100H=2000H*16+100H=20100H (3)MOV AX,VAL 寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+VAL=2000H*16+0050H=20050H (4)MOV BX,[SI] 寻址方式:寄存器间接寻址;源操作数在存储器中;物理地址:DS*16+SI=2000H*16+00A0H=200A0H (5)MOV AL,VAL[BX] 寻址方式:变址寻址;源操作数在存储器中;物理地址:DS*16+VAL+BX=2000H*16+0050H+0100=20150H (6)MOV CL,[BX][SI] 寻址方式:基址加变址寻址;源操作数在存储器中;物理地址:DS*16+BX+SI= 2000H*16+0100H+00A0H =201A0H (7)MOV VAL[SI],BX 寻址方式:寄存器寻址;源操作数在寄存器中;物理地址:无 (8)MOV [BP][SI],100 寻址方式:立即寻址;源操作数在;物理地址:无 .设有关寄存器及存储单元的内容如下:2. DS=2000H,BX=0100H,AX=1200H,SI=0002H,[20100H]=12H,[20101H]=34H,[20102H]=56H,[20103]=78H,[21200]=2AH,[21201H]=4CH,[21202H]=0B7H,[21203H]=65H。

微机原理与应用作业答案

1. 若二进制数为 ,则该数的十进制表示为( B : )。 2. 为二进制补码,该数的真值为( C +58 )。 3. 01000110为二进制补码, 该数的真值为( A +70 )。 4. 8位二进制数的原码表示范围为( C -127 ~ +127 )。 5. n 位二进制数的原码表示范围为( C 12~1211-++---n n )。 6. 8位二进制数的反码表值范围为( C -127~ +127 )。 7. n 位二进制数的反码表示范围为( C 12~1211-++---n n )。 8. 8位二进制数的补码表值范围为( B -128 ~ +127 )。 9. n 位二进制数的补码表示范围为( B 12~211-+---n n )。 10. 8位二进制数的无符号数表值范围为( A 0 ~ 255 )。 11. 决定计算机主要性能的是( A 中央处理器 )。 12. M I P S 用来描述计算机的运算速度,含义是( C 每秒执行百万条指令 )。 13. 完整的计算机系统应包括( D 硬件设备和软件系统)。 14. 计算机硬件主要由C P U 、内存、I /O 设备和( B 三总线 )组成。 15. 包含在8086C P U 芯片内部的是( A 算术逻辑单元)。 16. 在机器数( B 补码)中,零的表示形式是惟一的。 17. 程序计数器P C 的作用是( A 保存将要执行的下一条指令的地址)。 18. 8086当前被执行的指令存放在( D CS :IP )。 19. 运算器执行两个补码表示的整数加法时,产生溢出的正确叙述为( D 相加结果的符号位与两同号加数的符号位相反则产生溢出)。 20. 8086中,存储器物理地址形成算法是( B 段地址左移4位/16/10H+偏移地址 )。 21. 下列逻辑地址中对应不同的物理地址的是( 03E0H :0740H )。 A :0400H :0340H B :0420H :0140H D :03C0H :0740H 22. 存储字长是指( B 存储单元中二进制代码个数)。 23. 8086系统中,每个逻辑段的最多存储单元数为( C 64KB )。 24. 若某C P U 具有64G B 的寻址能力,则该C P U 的地址总线宽度为( 36 )。 25. 下列数中最小的数是( A (1011011)2 )。 26. 指令队列具有( D 暂存预取指令 )的作用。 27. 指令队列工作方式为( A 先进先出 )。 28. 堆栈存储器存取数据的方式是( C 先进后出)。 29. 8086系统中,一个栈可用的最大存储空间是( B 64KB )。 30. 8086C P U 有( C 8 )个8位的通用寄存器。 31. 8086C P U 共有( D 14)个16位寄存器。 32. 某补码表示的8位二进制整数由5个1和3个0组成,则其可表示的最小值是 ( A -113 )。 33. 16个字数据存储区的首址为70A 0H :D D F 6H ,末字单元的物理地址为( C :7E814H )。 34. 8个字节数据存储区的首址为70A 0H :D D F 6H ,末字节单元的物理地址为( D :7E7FDH )。 35. 用M B 表示存储器容量时,1M B 等于( C 220个字节)。 1. 8086与外设进行数据交换时,常会在( T 3 )后进入等待周期T w 。 2. 下列说法中属于最小工作模式特点的是( A CPU 提供全部的控制信号)。 3. 下列说法中属于最大工作模式特点的是( C 需要总线控制器8288 )。 4. 8086 C P U 中,需要( B 2 )片数据总线收发器芯片8286。 5. 8086C P U 中,需要( C 3 )片地址锁存器芯片8282。 6. 从8086存储器中读取非规则字需要( B 2 )个总线周期。 7. 从8086存储器中读取奇地址存储的字节需要( A :1 )个总线周期。 8. 下列说法中,不正确的是( C 栈底是堆栈地址较小的一端)。 9. 在8086系统中,用控制线( D M/IO )实现对存储器和I /O 接口的选择。 10. C P U 对存储器访问时,地址线和数据线的有效时间关系为( B 地址线先有效)。 11. 8086 C P U 共有( D 21 )根分时复用总线。

微机原理及应用(广西大学)

微机原理期末复习要点(必看) 一、填空题(每空1分,共30分) 1、CPU访问存储器时,在地址总线上送出的地址称为物理地址。 2、80X86系统中,执行指令PUSH AX后,SP= SP-2 ;若执行指令POP AX 后,SP= SP+2 。 3、指令“MOV AX,2000H”源操作数的寻址方式为立即数 ;指令“MOV AX,[BX+SI+6]”源操作数的寻址方式为带偏移量的基础加变址。 4、设(DS)=24EOH,(SS)=2410H,(ES)=2510H,(DI)=0206H,则指令“MOV AX,[DI+100H]”源操作数的有效地址为 0306H ,物理地址为 25106H 。 5、80486可访问两个独立的地址空间,一个为I/O地址空间,其大小为 64K 字节。 6、执行指令“XOR AX,AX”后,标志位ZF的值为 1 。 7、若(AL)=10011000B,(BL)=01100111B,则执行指令“ADD AL,BL”后,(AL)=11111111B;执行指令“AND AL,BL”后,(AL)= 0 。 8、可屏蔽中断从CPU的 INTR 引脚进入,只有当中断允许标志IF为 1 时,该中断才能得到响应。 9、中断向量表存放在从 00000H 至 003FFH 存储空间中。 10、在实地址方式下,中断类型号为20H的中断所对应的中断向量,存放在内存 从 00080H 开始的四个连续字节单元中,若这四个字节单元的内容由低地址到 高地址依次为00H,50H,00H,60H,则中断服务程序的入口地址 65000H 。 11、80X86的I/O指令中,要寻址的16位的端口地址存放在 DX 中。 12、现要用6116静态RAM芯片构成8K×32位的存储器,此种芯片共需16 片。 13、8255A在“方式1输出”与外设之间的一对"握手"信号是 ACK和OBF 。 14、由实地址方式上,由逻辑地址获得物理地址的计算公式为:

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

浙江大学远程教育学院 《微机原理与接口技术》课程作业 姓名:学号: 年级:学习中心: 第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个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选

《微机原理及应用》作业试题【精品范文】

《微机原理及应用》作业试题 《微机原理及应用》作业试题 一、判断题 (共 5 道试题,共 20 分) 1.8086/8088CPU的复位后开始执行的第一条指令的地址为FFFFH。() A.错误 B.正确 2.采用直接寻址输入/输出指令的最大端口地址为0FFH。 () A.错误 B.正确 3.若各中断源的优先级是一样的,则可用自动循环优先级来实现。() A.错误

B.正确 4.DMA控制器8237A现行字节数寄存器的值减到0时,终止计数。() A.错误 B.正确 5.ROM必须定时刷新,否则所存信息就会丢失。() A.错误 B.正确 二、多选题 (共 3 道试题,共 12 分) 1.常用的输入设备有( ) A.键盘

B.鼠标 C.触摸屏 D.显示器 2.可以实现在数据段中保留10H个字节单元的指令有?( )。 A.DW 08H?DUP(?) B.DB 10H?DUP(?) C.DB 8 DUP(2 DUP(?)) D.DD 4 DUP(?) 3.8086/8088?CPU响应硬中断NMI和INTR时,相同的条件是?( )。 A.允许中断 B.当前指令执行结束

C.CPU工作在最大组态下 D.不处于DMA操作期间 三、单选题 (共 17 道试题,共 68 分) 1.地址译码器的输入端应接到( )上。 A.控制总线 B.数据总线 C.地址总线 D.外部总线 2.串行异步通信传输的主要特点是( ) A.通信双方不必同步 B.每个字符的发送是独立的

C.字符之间的传送时间长度应相同 D.字符发送速率由波特率决定 3.8086系统中内存储器地址空间为1M,而在进行I/O读写是,有效的地址线是() A.高16位 B.低16位 C.高8位 D.低8位 4.8086CPU在执行MOVAL,[BX]指令的总线周期内,若BX 存放的内容为1011H,则BHE和A0的状态是()。 A.0,0 B.0,1

微机原理及应用实验报告81487

实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日

实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec

微机原理与接口技术(第二版)习题答案

第1章 1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同? 解: 把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微 处理器。微处理器加上一定数量的存储器和外部设备(或外部设备的接口)构成了 微型计算机。微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成了微型计算机系统。 1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能? 解: CPU主要由起运算器作用的算术逻辑单元、起控制器作用的指令寄存器、指令译码器、可编程逻辑阵列和标志寄存器等一些寄存器组成。其主要功能是进行算术和逻辑运算以及控制计算机按照程序的规定自动运行。 1.3微型计算机采用总线结构有什么优点? 解: 采用总线结构,扩大了数据传送的灵活性、减少了连线。而且总线可以标准化,易于兼容和工业化生产。 1.4数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用 一套总线或者合用部分总线,那么要靠什么来区分地址和数据? 解: 数据总线是双向的(数据既可以读也可以写),而地址总线是单向的。 8086CPU为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为 地址总线。它们主要靠信号的时序来区分。通常在读写数据时,总是先输出地址(指定要读或写数据的单元),过一段时间再读或写数据。 1.8在给定的模型中,写出用累加器的办法实现15×15的程序。 DEC H JP NZ,LOOP HALT

第2章作业答案 2.1 IA-32结构微处理器直至Pentillm4,有哪几种? 解: 80386、30486、Pentium、Pentium Pro、PeruiumII、PentiumIII、Pentium4。 2.6IA-32结构微处理器有哪几种操作模式? 解: IA一32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。操作模式确定哪些指令和结构特性是可以访问的。 2.8IA-32结构微处理器的地址空间如何形成? 解: 由段寄存器确定的段基地址与各种寻址方式确定的有效地址相加形成了线性地址。若末启用分页机制,线性地址即为物理地址;若启用分页机制,则它把线性地址转为物理地址。 2.15 8086微处理器的总线接口部件由哪几部分组成? 解: 8086微处理器中的总线接口单元(BIU)负责CPU与存储器之间的信息传 送。具体地说,BIU既负责从内存的指定部分取出指令,送至指令队列中排队(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执 行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。 2.16段寄存器CS=120OH,指令指针寄存器IP=FFOOH,此时,指令的物理地址为 多少? 解: 指令的物理地址=12000H+FFOOH=21FOOH 第3章作业答案 3.1分别指出下列指令中的源操作数和目的操作数的寻址方式。 (1)MOV SI, 30O (2)MOV CX, DATA[DI] (3)ADD AX, [BX][SI] (4)AND AX, CX (5)MOV[BP], AX (6)PUSHF 解: (l)源操作数为立即寻址,目的操作数为寄存器寻址。

微型计算机原理及应用课后习题解答

李伯成《微机原理》习题第一章 本章作业参考书目: ①薛钧义主编《微型计算机原理与应用——Intel 80X86系列》 机械工业出版社2002年2月第一版 ②陆一倩编《微型计算机原理及其应用(十六位微型机)》 哈尔滨工业大学出版社1994年8月第四版 ③王永山等编《微型计算机原理与应用》 西安电子科技大学出版社2000年9月 1.1将下列二进制数转换成十进制数: X=10010110B= 1*27+0*26+0*25+1*24+0*23+1*22+1*21 +0*21 =128D+0D+0D+16D+0D+0D+4D+2D=150D X=101101100B =1*28+0*27+1*26+1*25+0*24+1*23+1*22+0*21+0*20 =256D+0D+64D+32D+0D+16D+4D+0D=364D X=1101101B= 1*26+1*25+0*24+1*23+1*22+0*21 +1*20 =64D+32D+0D+8D+4D+0D+1D=109D 1.2 将下列二进制小数转换成十进制数: (1)X=0.00111B= 0*2-1+0*2-2+1*2-3+1*2-4+1*2-5= 0D+0D+0.125D+0.0625D+0.03125D=0.21875D (2) X=0.11011B= 1*2-1+1*2-2+0*2-3+1*2-4+1*2-5= 0.5D+0.25D+0D+0.0625D+0.03125D=0.84375D (3) X=0.101101B= 1*2-1+0*2-2+1*2-3+1*2-4+0*2-5+1*2-6= 0.5D+0D+0.125D+0.0625D+0D+0.015625D=0.703125D 1.3 将下列十进制整数转换成二进制数: (1)X=254D=11111110B (2)X=1039D=10000001111B (3)X=141D=10001101B 1.4 将下列十进制小数转换成二进制数: (1)X=0.75D=0.11B (2) X=0.102 D=0.0001101B (3) X=0.6667D=0.101010101B 1.5 将下列十进制数转换成二进制数 (1) 100.25D= 0110 0100.01H (2) 680.75D= 0010 1010 1000.11B 1.6 将下列二进制数转换成十进制数 (1) X=1001101.1011B =77.6875D

《微机原理与接口技术》第二次作业答案

《微机原理与接口技术》第二次作业答案 (C ) A. 10100000B B. 01000001B C. 01000000B D. 10100001B 6.二进制数 10110101B-11011011B (即2014年09月11日)后显示在题目旁边。 一、单项选择题。本大题共 20个小题,每小题 3.0分,: 选项中,只有 ?项是符合题目要求的。 1. “ A 的 ASCII 码值是() (B ) A. 51H B. 41H C. 61H D. 31H 2. 二进制数10101101 转换为十进制数的值是( ) (C ) A. 174 B. 175 C. 173 D. 172 3. 十六进制数ECH 转换为十进制数的值是() (A ) A. 236 B. 235 C. 234 D. 237 4. 设A=186,B=273Q,C=0BBH ,它们之间的关系是 (D ) A. A>B>C B. A

A. 11001011B B. 01011010B C. 11011010B D. 01011011B 7.二进制数 10010111B 与11010011B 求和后, ZF 与CF 标志位的值为() A. 1、1 B. 0、1 C. 1、0 D. 0、0 8. 二进制数 10010111B (B ) 与11010011B 求和后, PF 与OF 标志位的值为() (A ) A. 1、 1 B. 0、 1 C. 1、 0 D. 0、 0 9. 标志寄存器中属于控制标志位的是( (D ) A. DF ,OF ,SF B. OF ,CF ,PF C. AF ,OF ,SF D. DF ,IF ,TF 0、0 10. 8088/8086 存储器分段,每个段不超过( ) (D ) A. 64K 个字 B. 32K 个字节 C. 1兆个字节 D. 64K 个字节 (A ) A. END 语句是一可执行语句 B. END 语句表示程序执仃到此结束 C. END 语句表示源程序到此结束 D. END 语句在汇编后要产生机器码 11.在汇编语言程序中,对 END 语句正确的叙述是()

微机原理及应用 上机实验报告2 数据传送

课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END

微机原理及应用试题

名姓 号学 级班 系 院学 扬州大学试题纸 (2009 —2010学年第1学期) 广陵学院07班(年)级课程微机原理及应用(A)卷 题目-一一-——二■——三四五总分 得分 阅卷人 分 ) 1 得分阅卷人审核人、选择题 (20%,每题 1. 以程序存储和程序控制为基础的计算机结构提出者是(B ) A.布尔 B. 冯?诺依曼 C.图灵 D. 帕斯卡尔 2. 十进制数95转换成二进制数是(D ) A.10010101 B.01100101 C. 0100110 D.01011111 3.大写字母C的ASCII码是(C ) A. 11001100B B. 00001100B C. 01000011B D.01000111B 4?在微机中,主机和高速硬盘进行数据交换,一般采用的方式是(D ) A.程序直接控制方式 B. 程序中断控制方式 C.无条件传送方式 D. DMA 方式 5?将寄存器AX的内容求反的正确指令是(C ) A. NEG AX B. CMP AX,0FFFFH C. NOT AX D. CMP AX , AX 6.指令MOV ARRAY[DI], DX 源操作数的寻址方式是(B ) A.变址寻址 B. 寄存器寻址 C.基址寻址 D. 基址变址寻址 7. 8086/8088 响应不可屏蔽中断时,其中断类型号是(A ) A.由CPU自动产生 B. 从外设取得 C.由指令INT给出 D. 由中断控制器提供 8.8086指令队列的长度是(C ) A. 4个字节 B.5 个字节 C.6 个字节 D.8 9.在最小模式下,CPU从外设读取数据操作, M / IO、WR、 个字节 RD信号的状态依次为(A ) A. 0 , 1, 0 B. 0 ,三态,0 C. 0 , 0, 1 D. 1 , 1, 0 10.在8086系统中,CPU被启动后,IP及四个段寄存器的初始状态是 (D )

微机原理第2章作业及答案

第2章8086微处理器及其系统 习题解答 1. 8086 CPU 由哪两部分构成,它们的主要功能是什么在执行指令期间,EU 能直接访问存储器吗,为什么 【解】8086CPU由执行部件(EU)和总线接口部件(BIU)两部分组成。 执行部件由内部寄存器组、算术逻辑运算单元(ALU)与标志寄存器(FR)及内部控制逻辑等三部分组成。寄存器用于存储操作数和中间结果;算术逻辑单元完成16位或8位算术逻辑运算,运算结果送上ALU内部数据总线,同时在标志寄存器中建立相应的标志;内部控制逻辑电路的主要功能是从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。 总线接口部件(BIU)负责CPU与存储器、I/O设备之间传送数据、地址、状态及控制信息。 每当EU部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。EU要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU就向BIU 申请总线周期,若BIU总线空闲,则立即响应,若BIU正在取一条指令,则待取指令操作完成后再响应EU的总线请求。 2. 8086CPU与传统的计算机相比在执行指令方面有什么不同这样的设计思想有什么优点【解】8086 CPU与传统的计算机相比增加了指令队列缓冲器,从而实现了执行部件(EU)与总线接口(BIU)部件的并行工作,因而提高了8086系统的效率。 3. 8086 CPU 中有哪些寄存器,各有什么用途 【解】8086共有8个16位的内部寄存器,分为两组: ①通用数据寄存器。四个通用数据寄存器AX、BX、CX、DX均可用作16位寄存器也可用作8位寄存器。用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。 AX(AH、AL)累加器。有些指令约定以AX(或AL)为源或目的寄存器。实际上大多数情况下,8086的所有通用寄存器均可充当累加器。 BX(BH、BL)基址寄存器。BX可用作间接寻址的地址寄存器和基地址寄存器,BH、BL 可用作8位通用数据寄存器。 CX(CH、CL)计数寄存器。CX在循环和串操作中充当计数器,指令执行后CX内容自动修改,因此称为计数寄存器。 DX(DH、DL)数据寄存器。除用作通用寄存器外,在I/O指令中可用作端口地址寄存器,乘除指令中用作辅助累加器。 ②指针和变址寄存器。 BP(Basic Pointer Register)基址指针寄存器。 SP(Stack Pointer Register)堆栈指针寄存器。

微机原理与应用实验报告

微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.

微机原理及应用

《微机原理及应用》 实训指导书 山东科技大学泰山科技学院

目 录 一、实训性质 (1) 二、实训目标 (1) 三、实训基本要求 (1) 四、实训过程要求 (1) 五、实训题目 (2) 实训一 学生成绩统计 (2) 实训二 打字游戏 (3) 实训三 乒乓球比赛游戏机 (3) 实训四 交通灯控制 (4) 实训五 反应测试仪 (5) 实训六 电子琴 (5) 实训七 猜数字游戏 (6) 实训八 微秒计时器 (6) 实训九 参数可调波形发生器 (6) 实训十 模拟电梯 (7) 实训十一 多通道温度采集与显示系统 (8) 试验十二 计算机串行通信接口的设计与应用 (8) 实训十三 流水线模拟监视器 (8) 实训十四 数据传送显示 (9)

一、实训性质 《微机原理及应用》实训教学是学生在完成《微机原理及应用》理论学习之后,为培养学生 的动手能力而必须完成的实践性教学环节。在进行本教学环节之前,学生应具备《微机原理及应 用》的理论基础知识。 二、实训目标 《微机原理及应用》实训的教学让学生通过接触客观实际,来了解和认识所学的专业知识, 让学生了解和掌握所学知识在客观实际中的应用,通过实训课可以使学生了解解决实际问题的过 程,并能亲自动手完成相关题目设计。让学生对实际课题设计的过程和方法有个很好的认识,又 能亲自动手来锻炼提高专业技能,把所学的理论知识与实际能力紧密的结合在一起。 在进行实训的同时,教师应培养学生具有初步的科研意识,培养学生查找资料、运用设计资 料,完成工程问题的能力,为后继课程的学习打下坚实的基础。 三、实训基本要求 为检验学生在原理与接口综合应用方面分析问题与解决问题的能力,同时亦给学生提供更 多、更好的训练机会,本指导书给出了微机硬件应用综合测试题。大部分测试题,至少需要选用 PC 总线微机实验装置中 3 部分以上的硬件电路(还需将它们有机组合起来)并编制相应的应用软 件。为了发挥每一个同学的创造能力,每一测试题除了题目外仅给出设计要求(又分基本要求与 进一步要求两部分)及很少的设计提示。学生可根据设计要求,选择最合适的器件,构成最有效 的硬件电路来完成。对于学有余力的学生,除了完成基本要求与进一步要求的内容外,还可对同 一题选择不同的器件(而这往往总是能做到的)构成不同的硬件电路,尽情发挥和创造。 四、实训过程要求 1.软件部分 对软件部分,建议按如下的步骤进行: (1)首先正确理解题意及题目要求,分析程序设计思想; (2)建立算法,绘制流程图; (3)再根据算法流程图编写程序;

相关文档
最新文档