当前位置:文档之家› 汇编语言复习知识点(郑晓薇版)

汇编语言复习知识点(郑晓薇版)

汇编语言复习知识点(郑晓薇版)
汇编语言复习知识点(郑晓薇版)

1.9 写出下列算式的二进制运算结果,标志位CF 、SF 、ZF 、OF 分别是什么值?

(1)56+63 (2)83-45 (3)-74+29 (4)-92-37 答案:

(1) 56+63=01110111B ,CF=0,SF=0,

ZF=0,OF =0

(2) 83-45=00100110B ,CF=0,SF=0,ZF=0,OF =0

(3) -74+29=11010011B ,CF=0,SF=1,ZF=0,OF =0

(4) -92-37=01111111B ,CF=1,SF=0,ZF=0,O F=1

2.13 有一个32K 字节的存储区,首地址是3302:5AC 8H ,写出其首单元和末单元的物理地址。 答案:

首单元的物理地址=38AE8H ,末单元的物理地址=38AE8H+7FFFH=40AE7H

2.15 存储单元地址和内容表示如下,请画出存储单元存放形式。

(1) (1280A)=3456H (2) (20021H)=4DH (3) (33450H)=37A520D1H

2.16 根据逻辑地址计算出物理地址,并解释逻辑地址与物理地址的对应关系。

(1) 2389:3DE9H (2) 1230:EC92H (3) 14D9:C202H 答案:

(1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H

(2)和(3)的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。

2.17 给出段地址和偏移地址如下,计算出对应的物理地址。

(CS)=54C3H ,(ES)=2569H ,(DS)=1200H ,(SS)=4422H ,

(BX)=5678H ,(SP)=9945H ,(IP)=0E54H ,(DI)=63B1H 答案:

代码段CS:IP 的物理地址=55A84H 堆栈段SS:SP 的物理地址=4DB65H

数据段DS:BX 的物理地址=17678H 附加段ES:DI 的物理地址=2BA41H

3.2 分别写出与数据有关的7种寻址方式并举例说明。

3.3 已知(BX)=1290H ,(SI)=348AH ,(DI)=2976H ,(BP)=6756H ,(DS)=2E92H ,(ES)=4D82H ,(SS)=2030H ,请指出下列指令的寻址方式,并求出有效地址EA 和物理地址: MOV AX,BX MOV AX,1290H MOV AX,[BX] MOV AX,DS:[1290H] MOV AX,[BP] MOV [DI][BX],AX MOV ES:[SI],AX 查看正确答案

MOV AX,BX 源操作数为寄存器寻址,EA 无,物理地址 无

MOV AX,1290H 立即寻址,EA 无,物理地址 无 MOV AX,[BX] 寄存器间接寻址,EA=1290H, 物理地址=2FBB0H

MOV AX,DS:[1290H] 直接寻址,EA=1290H, 物理地址=2FBB0H

MOV AX,[BP] 寄存器间接寻址,EA=6756H, 物理地址=26A56H

MOV [DI][BX],AX 目的操作数为基址变址寻址,EA=3C 06H, 物理地址=32526H

MOV ES:[SI],AX 寄存器间接寻址,EA=348AH, 物理地址=50CAAH

3.7 请指出下列指令的错误: MOV AX,[CX] MOV AL,1200H MOV AL,BX MOV [SI][DI],AX MOV ES:[DX],CX MOV [AX],VALUE MOV COUNT,[SI] 答案:

MOV AX,[CX] 错。CX不能为间址寄存器

MOV AL,1200H 错。立即数超出8位寄存器范围

MOV AL,BX 错。两个操作数不匹配

MOV [SI][DI],AX 错。两个变址寄存器不能在一起MOV ES:[DX],CX 错。DX不能为间址寄存器

MOV [AX],VALUE 错。AX不能为间址寄存器

MOV COUNT,[SI] 错。两个操作数不能都是存储单元3.9 写出用下列寻址方式将存储单元X中的第3个字取出,AX与其相加再放入Y单元的指令序列。

(1)直接寻址(2)寄存器相对寻址(3)基址变址

答案

(1) ADD AX,[X+4]

MOV Y,AX

(2) MOV BX,4

ADD AX,X[BX]

MOV Y,AX

(3) MOV BX,4

MOV SI,OFFSET X

ADD AX,[BX+SI]

MOV Y,AX

4.9 解释下列伪指令的作用:

(1) ASSUME CS:CODE,DS:DATA (2) END START (3) VALUE DW 12,35,-6 (4) STRING DB ‘INPUT:’(5) MESS DB 5 DUP(?) (6) XX DD 12345678H (7) ORG 0320H (8) CONT EQU 2*3.14

4.10 根据题目,写出相关伪指令:

(1) 定义数据段DATA,并在数据段中定义两个字单元X、Y,初始值都是0

(2) 定义一个字符串SRING,保存’Computer’

(3) 定义有100个字节单元的COUNT数组,初始值均为空

(4) 用赋值伪指令定义PI为3.14

(5) 用类型操作符LABEL将VALUE单元定义为字节型

查看正确答案

(1) DATA SEGMENT

X DW 0

Y DW 0

DATA ENDS

(2) STRING DB ’Computer’

(3) COUNT DB 100 DUP(?)

(4) PI EQU 3.14

(5) VALUE LABEL BYTE

4.11 下列伪指令有错吗?如果有错,请指出错误原因:(1) X1 DB 35H,0,-80 (2) X2 DB 35,260,-1 (3) X 3 DB 1234H (4) X4 DW 100 (5) X5 DW 100(?) (6) X6 DD ‘A B’

查看正确答案

(1)对。(2)错。260超出了字节范围。(3)错。X3是字节型,1234H是字型,不匹配。

(4)对。(5)错。缺少DUP。(6)对。

4.12 写出下列指令的执行结果:

TABLE DB 3,33,33 H

(1) MOV AL,TABLE

(2) MOV AX,WORD PTR TABLE

(3) MOV DX,OFFSET TABLE

(4) MOV CL,TABLE+2

(5) MOV BX,SEG TABLE

(6) MOV BX,TYPE TABLE

(7) LEA DX,TABLE

查看正确答案

(1)AL=3。(2)AX=2103H。(3)DX=TABLE的偏移地址。(4)CL=33H

(5)BX=TABLE的段地址。(6)BX=1。(7)DX= T ABLE的偏移地址。

4.24 编程序。将键盘输入的小写字母变为大写字母显示在屏幕上。

查看正确答案

.model small

.code

start:

mov ah,1 ;键盘输入

int 21h

sub al,20h ;变为大写

mov dl,al

mov ah,2

int 21h

mov ah,4ch

int 21h

end start

4.26 编写程序,建立一个0~9的平方根

表,查表可得某数的平方根。

data segment

x db '0.000','1.000','1.414','1.732','2.000'

db

'2.236','2.449','2.646','2.828','3.000' ;建

立字符表

y db 5 dup(?) ;存放查到平方根

u db 3 ;要查的数

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov al,u ;要查的数

mov cl,5

mul cl ;u*5=15(号单元开

始)

mov ch,0

mov bx,ax ;地址保存到bx

mov si,0

let1:

mov al,x[bx] ;取出平方根数字

mov y[si],al ;存入y

inc si

inc bx

loop let1 ;循环取出5次

mov ah,4ch

int 21h

code ends

end start

4.27 编写查表程序。建立一个班级姓名表,给出学号,可显示出其姓名。

.model small

.data

x1 db 'zhang yan $' ;姓名为10个字符

宽度

x2 db 'li li $'

x3 db 'wang lan $'

x4 db 'zhao xue $'

x5 db 'li jiang $'

u db 3 ;要查的学号

.code

start:

mov ax,@data

mov ds,ax

mov al,u ;给出学号

mov cl,10

mul cl ;u*10=30(号单元

开始)

mov ah,0

mov dx,ax ;地址保存到dx

mov ah,9 ;9号功能显示字符

int 21h

mov ah,4ch

int 21h

end start

无符号数比较转移指令包括4种指令:

JB 低于则转移(A<B)

测试条件:CF =1且ZF=0

JBE 低于等于则转移(A≤B)

测试条件:CF=1或ZF=1

JA 高于则转移(A>B)

测试条件:CF=0且ZF=0

JAE 高于等于则转移(A≥B)

测试条件:CF=0或ZF=1

带符号数的最高位为符号位,因此带符号数的数值与无符号数不一样

JL 小于则转移(A<B)

测试条件:SF≠OF且ZF=0

JLE 小于等于则转移(A≤B)

测试条件:SF≠OF或ZF=1 JG 大于则转移(A>B)

测试条件:SF=OF且ZF=0

JGE 大于等于则转移(A≥B)

测试条件:SF=OF或ZF=1

SAL算术左移指令

SAR算术右移指令

SHL逻辑左移指令

SHR逻辑右移指令

ROL循环左移指令

ROR循环右移指令

RCL带进位的循环左移指令

RCR带进位的循环右移指令

5.14 指出下列指令的错误所在。

(1)AND [SI],3

(2)SUB DS,AX

(3)PUSH 5

(4)OR 80H,AL

(5)CMP [BX],TABLE

(6)ROL AL,3

查看正确答案

(1) 目的操作数是存储单元时,要用PTR伪操作指出单元的属性(2)DS段寄存器使用非法(3)立即数使用非法(4) 目的操作数不允许是立即数(5) 两个操作数不允许都是存储单元(6)移位次数超过1要用CL表示。

5.17 简述操作系统对可执行程序的加载和执行过程。【程序的加载】操作系统进行了如下操作:(1)将用户程序调入内存

(2)建立256字节的程序段前缀PSP区

(3)用DS和ES寄存器保存PSP区的段地址

(4)在PSP后面定义代码段,将程序代码紧接着PSP存放

(5)程序代码所在的段地址放入CS寄存器,偏移地址0000H放入IP寄存器

(6)如果用户程序定义了数据段,则在PSP 和代码段之间预留部分空间

(7)设置堆栈区的段地址SS寄存器和堆栈指针

(8)将控制权交给用户程序,开始执行。5.27 分支程序设计。完成如下公式的计算,请写出程序。

(X+3)/2 X>0

Y= 0 X=0

X×4 X<0

查看正确答案

分支程序设计。完成如下公式的计算,请写出程序。

(X+3)/2 X>0

Y= 0 X=0

X×4 X<0

程序如下:

DATA SEGMENT

X DB 23

Y DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AL,X

CMP AL,0

JE SUB2

JG SUB1

MOV CL,2

SAL AL,CL

JMP SHORT SUB2

SUB1:ADD AL,3

SAR AL,1

SUB2:MOV Y,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

5.29 字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO 单元。【可能会把题目改成求奇数、偶数的数目】查看正确答案

字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO 单元。

程序如下:

DATA1 SEGMENT

M DW 21,-34,32,112,-324,0,76,0,48,50

POSI DW ?

NEGA DW ?

ZERO DW ?

DATA1 ENDS

CODE1 SEGMENT

ASSUME CS: CODE1,DS:DATA1

START: MOV AX,DATA1

MOV DS,AX

MOV CX,10

LEA SI,M

AGAIN: CMP WORD PTR [SI],0

JL LOWER

JE EQUAL

INC POSI

JMP LPP1

LOWER: INC NEGA

JMP LPP1

EQUAL: INC ZERO

LPP1: ADD SI,2

DEC CX

JNZ AGAIN

MOV AH,4CH

INT 21H

CODE1 ENDS

END START

6.14 源串STRG1和目的串STRG2分别放在数据段和附加段中,请写出含有各种段定义的程序段,完成将STR G1传送到STRG2的功能。

DATAS SEGMENT

STRG1 DB 'NEUQ COMPUTER SCIENCE AND TECHNOLOGY'

STRG DB ?

DATAS ENDS

EXTRAS SEGMENT

STRG2 DB 30 DUP(?)

EXTRAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME

CS:CODES,DS:DATAS,SS:STACKS,ES:EXTRAS START:

MOV AX,DATAS

MOV DS,AX

MOV AX,EXTRAS

MOV ES,AX

LEA SI,STRG1

LEA DI,STRG2

MOV CX,STRG-STRG1

CLD

REP MOVSB

MOV AH,4CH

INT 21H

CODES ENDS

END START

6.17写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。

查看正确答案

写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。

DA TAS SEGMENT

value db 1,-2,3,5,-8,-3,-2,-7

N db ?

DA TAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DA TAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

mov cx,N-value

lea bx,value

mov ax,0

s:

cmp byte ptr [bx],0

jns t

inc ax

t:

inc bx

loop s

MOV AH,4CH

INT 21H

CODES ENDS

END START

6.20 编程。在FOUND字数组中找出最小数存入MIN 单元。

DATAS SEGMENT

FOUND db 1,3,5,7,9,-1,-3,-5,0,9

MIN db ?

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

lea bx,FOUND

mov cx,min-found

let0:

cmp

MOV AH,4CH

INT 21H

CODES ENDS

END START

【冒泡算法】的主要思想是从第一个元素开始,依次对两个相邻的元素进行比较,如果第一个元素比第二个大,则两数交换位置,第一遍N-1次比较之后,最大的数排在最后;再做第二遍N-2次比较,比较出第二大的数……;以此类推,最多进行N-1遍比较,所有的数按从小到大升序排序。将字数组PART按升序排序。

设计思路:

(1)用两条LOOP指令实现双重循环时,对CX寄存器有冲突。采用PUSH CX指令将外循环的CX值入栈保存,内循环的LOOP结束后,再将外循环的CX恢复;

(2)用相对寄存器寻址取出两数进行比较。

程序如下:

;6-5.asm 将字数组part按升序排序。

data segment

part dw 15,32,6,-27,8

sign dw ?

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov cx,sign-part ;数组长度shr cx,1 ;元素个数

dec cx

loop1:

push cx ;保存外循环次数mov bx,0

loop2:

mov ax,part[bx]

cmp ax,part[bx+2]

jle next ;升序

xchg ax,part[bx+2] ;交换mov part[bx],ax

next: add bx,2

loop loop2

pop cx ;恢复外循环次数loop loop1

mov ah,4ch

int 21h

code ends

end start

7.18 写出求数组元素累加和的子程序。data segment

array db 12h,32h,34h,45h,21h,23h count equ $-array

sum db ?

data ends

code segment

assume ds:data,cs:code

start:

mov ax,data

mov ds,ax

call qiuhe

mov ax,4c00h

int 21h

qiuhe proc

mov ax,0

lea si,array

mov cx,count

next:

add al,[si]

inc si loop next

mov sum,al

ret

qiuhe endp

code ends

end start

7.19写出子程序。查十进制数的ASCII码表,对AL中的BCD码显示出十进制数。

DATA SEGMENT ;定义源数据段

STRING DB 'Input:','$'

MSR DB 6,?,6 DUP(?) ;数据段MSR用于接收从键盘输入的五位十进制数

DATA ENDS

CODE SEGMENT ;定义代码段

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX ; 装载数据段寄存器

LEA DX, STRING

MOV AH, 09H

INT 21H

MOV DX, OFFSET MSR

MOV AH,0AH

INT 21H

MOV CL,[MSR+1] ;CL中保存实际输入的数据的位数,用于控制循环执行的次数

MOV SI,0002H

MOV BX, OFFSET MSR

NEXT1: MOV AL,[BX+SI] ;开始传输数据 CMP AL,40H

JNC LK1 ;大于等于40H则表明输入的不是数字符,跳到LK1输入F

CLC

CMP AL,30

JC LK1 ;小于30H则表明输入的不是数字字符,到LK1输出字符F

SUB AL,30H

MOV CH,0

PUSH CX

MOV CL,4

MOV DH,AL

SHL DH,CL

NEXT2: ROL DH,1

MOV DL,DH

AND DL,01H

ADD DL,30H

MOV AH,02H

INT 21H

DEC CL

JNZ NEXT2

POP CX

INC SI

DEC CL

JNZ NEXT1

LK1: JZ LK2

MOV DL,46H ;输出字符F

MOV AH,02H

INT 21H

INC SI

DEC CL

JNZ NEXT1

LK2: MOV AX,4C00H

INT 21H

CODE ENDS

END START

7.20 编写将X单元中的二进制数显示为十六进制数的子程序。

data segment

m dw 2ED8H

tbl db '0123456789ABCDEF'

msg db 'The HEX Number is :$' data ends

code segment

assume cs:code, ds:data

start:

mov ax,data

mov ds, ax

lea dx, msg

mov ah,9

int21h

mov ax, m

call print

;exit to OS

mov ah,4ch

int21h

;print the value in AX with base 16 print proc near

lea bx, tbl

mov dx, ax

mov cx,4

mov ah, 0eh

R1:

rol dx, 4

mov al, dl

and al, 0Fh

xlat

int10h

loop R1

ret

print endp

code ends

end start

7.29 编写求数组中最大数的子程序。

以下子程序假设默数组认放在DS段中,其中的数据为dw型。调用子程序前的参数设置:BX中存放数组的起始偏移地址,CX中存放数组的长度。调用子程序后,数组的最大值放在CX中。

array_max: push ax

mov ax,[bx] ;把数组第一个数放到ax中

find: cmp ax,[bx] ;把ax中的数与数组中的数逐个进行比较

ja next ;如果ax中的数比数组中当前的数大则转到next

mov ax,[bx] ;如果ax 中的数小于或等于数组中当前的数,则进行替换

next: add bx,2 ;对比下一个数

loop find

mov cx,ax ;把找出的最大值放入cx中

pop ax

ret

7.30 编制一个计算数组中所有负数之和的子程

序。并利用此子程序分别计算A数组和B数组中的负数之和,结果分别放在SUM1和SUM2单元中。DA TA SEGMENT

A D

B 9,-8,-7,6,5

B DB -8,7,6,-5,4

SUM1 DB ?

SUM2 DB ?

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AX

MOV CX,5

MOV SI,OFFSET A

CALL LADD

MOV SUM1,BL

MOV SI,OFFSET B

CALL LADD

MOV SUM2,BL

MOV AH,4CH

INT 21H

LADD PROC NEAR

PUSH CX

PUSH AX

PUSH SI

XOR BL,BL

NEXT: MOV AL,[SI]

AND AL,AL

JNS JJJ

ADD BL,AL

JJJ:INC SI

LOOP NEXT

POP SI

POP AX

POP CX

RET

LADD ENDP

CODE ENDS

END START

(1)定义显示一个字符的宏指令OUTPUT,要显示的字符用哑元Z表示。OUTPUT MACRO Z

MOV DL,Z MOV AH,2

INT 21H

ENDM

(2)定义宏指令KEY_STR,实现从键盘输入一串字符

KEY-STR MACRO OPR1,OPR2

MOV AX,OPR1

MOV DS,AX

MOV DX,OPR2

MOV AH,0AH

INT 21H

ENDM

(3)定义宏指令定义宏指令DISPLAY,显示一串字符。

DISPLAY MACRO

MOV AX,OPR1

MOV DS,AX

MOV DX,OPR2

MOV AH,09H

INT 21H

ENDM

(4)编程序。利用宏指令INPUT和和OUTPUT实现将键入的小写字母变为大写。

.MODEL SMALL

.STACK

.CODE

START

INPUT

SUB AL,20H AND AL,11011111B OUTPUT AL

RETSYS

ENDSTART

宏与子程序都是编写结构化程序的重要手段,两者各有特色。

相同之处:宏和子程序都可以定义为一段功能程序,可以被其他程序调用。

不同之处:

(1)宏指令利用哑元和实元进行参数传递。宏调用时用实元取代哑元,避免了子程序因参数传递带来的麻烦。使宏汇编的使用增加了灵活性。

(2)实元还可以是指令的操作码或操作码的一部分,在编译汇编的过程中指令可以改变。(3)宏调用的工作方式和子程序调用的工作方式是完全不同的。

建立宏库8-1.mac 文件。共有4个宏。程序如下:

;8-1.mac 宏库

;1

INPUT macro

mov ah,01H

int 21h

endm

;2

OUTPUT macro x

mov dl,x

mov ah,02h

int 21h

endm

;3

RETSYS macro

mov ah,4ch

int 21h

endm

;4

ADDI macro x1,x2,result mov ax,x1

add ax,x2

mov result,ax

endm

;5

STR_MOV macro opr1,opr2,opr3 mov cx,opr1

lea si,opr2

lea di,opr3

cld

rep movsb

endm

宏库的使用。

;8-1.asm 宏库的使用

include 8-1.mac

.model small

.stack 100h

.data

x db 33h,34h

y dw ?

mess1 db 1,2,3,4,5,6,7,8,9,0 mess2 db 10 dup(?)

.code

start:

mov ax,@data

mov ds,ax mov es,ax

;

STR_MOV

10,mess1,mess2 ;mess1传送到mess2

STR_MOV 2,x,y ;x传送到y

;

INPUT ;输入的小写字母变为大写输出

sub al,20h

OUTPUT al

;

ADDI 34,25,y ;y=34+25 RETSYS ;结束,返回DOS end start

宏库8-2.mac

;8-2.mac 宏库

;1

input macro ; 宏input,键盘输入一个字符

mov ah,01H

int 21h

endm

;2

output macro opr1 ; 宏output,显示一个字符

mov dl,opr1

mov ah,02h

int 21h

endm

;3

retsys macro ; 宏retsys,结束、返回DOS

mov ah,4ch

int 21h

Endm

;4

key_str macro opr1 ; 宏key_str,键盘输入一串字符

mov dx,offset opr1

mov ah,10

int 21h

endm

;5

display macro opr1 ; 宏display,显示一串字符lea dx,opr1

mov ah,9

int 21h

endm

;6

divis macro x ; 宏divis,做除法并显示

mov cx,x

div cx

mov bx,dx ;保存余数

mov si,ax

mov dl,dectab[si] ;查表显示

1.中断响应条件

满足以下4条,CPU才可以响应中断:(1)当前的指令周期结束;

(2)采样到有效的中断请求信号;(3)如果是可屏蔽中断请求INTR,检查中断允许标志IF是否为1,即中断开放;(4)CPU正在执行的程序不是中断服务程序,或者是中断优先级较低的中断服务程序。

有几种特殊情况CPU不能响应中断:(1)当执行到STI指令时,CPU不会马上

响应中断。STI指令是开中断指令,要求在开放中断后再执行后续的一条指令后才能响应中断;

(2)IRET指令是中断子程序返回指令,它也要求再执行一条后续指令后才能响应中断。这样做的目的是保护系统能够正常运行;(3)当执行MOV SS,AX指令,即向SS段寄存器传送数据时,即使发生了中断,CPU 也不会响应;直到本条执行完后,接着再执行一条指令才响应中断。

2.中断响应过程

(1)首先将标志寄存器FLAGS压入堆栈,将陷阱标志TF存入暂存器;

(2)将IF和TF清零;

(3)将正在运行程序的断点的CS和IP压入堆栈;

(4)从中断向量表中取出中断向量高两个字节的内容送入CS,取出低两个字节的内容送到IP;

(5)转到相应中断源的中断服务程序入口,执行中断处理服务程序。

编写软件中断处理子程序步骤如下:(1)保存现场;

(2)STI开中断指令;如允许中断嵌套,则开中断

(3)处理中断;

(4)CLI关中断指令;

(5)恢复现场;

(6)IRET指令,返回被中断的程序

指令系统和汇编语言程序的设计实验

第二章指令系统和汇编语言程序设计实验 本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法, 目的在于通过这些实验可以使学生巩固所学知识, 加深对 MCS-51单片机部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。 第一节指令系统实验 实验一熟悉键盘操作及数传指令编程设计 一、实验目的 1.熟悉软件模拟调试的环境及键盘操作。 2.掌握汇编语言程序设计的方法,加深对指令的理解。 3.学会软件模拟调试和察看修改观察项的方法。 二、实验容 印证数据传送指令的功能、寻址方式以及 PC 指针、 SP 指针、 DPTR 指针、Ri 指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。 三、实验步骤 1.进入调试软件环境,输入源程序; 2.汇编源程序; 3.用单步方式运行程序; 4.检查并记录各寄存器和存储单元容的变化。 四、程序清单

1. 部 RAM 数据传送 需要查看的数据有 30H,31H,A,R0等。 ORG 0000H MOV R0,#30H MOV 30H,#45H MOV 31H,#46H MOV R2,30H MOV 02H,31H MOV A,#87H MOV 0E0H,30H MOV 30H,A MOV 31H,R0 SJMP $ END 2. 外部数据传送 需要查看的数据有外部数据存储器单元 2000H ,外部程序存储器单元2001H 。 ORG 0000H MOV A,#89H MOV DPTR,#2000H

MOVX DPTR,A INC DPTR CLR A MOVC A,A+DPTR SJMP $ ORG 2000H DB 44H DB 78H DB 67H END 3. 堆栈操作 需要查看的数据有 50H 、 51H 、 A 及 SP 指针和堆栈区中数据随 PUSH 和POP 指令执行后的变化情况和数据的存放次序等。 1 可用于保护现场和恢复现场的程序 ORG 0000H MOV SP,#5FH MOV 50H,#3BH MOV 51H,#2FH MOV A,#12H

汇编语言程序设计教学大纲

《汇编语言程序设计》课程教学大纲 二、课程简介 汇编语言是计算机能够提供给用户使用的最快最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而,对程序的空间和时间要求很高的场合及需要直接控制硬件的应用场合,汇编语言的应用是必不可少三、课程目标 汇编语言课程是计算机专业的一门专业选修课。通过本课程的学习,应使学 生系统地了解计算机组成原理与内部的运行机理,掌握汇编语言程序设计及相关 知识,为学习本专业后继课程和进行与硬件有关的技术工作打下良好基础。通过 上机实验,使学生受到软硬件实验的初步训练,并培养学生分析问题和解决问题 的能力。 四、教学内容及要求 第一章基础知识 1.教学内容 (1) 为什么要用汇编语言编写程序 (2) 进位计数制与不同基数的数之间的转换 (3) 二进制数和十六进制数运算 (4) 计算机中数和字符的表示 (5) 几种基本的逻辑运算 2.基本要求 了解机器指令、代码指令、机器语言、汇编指令、汇编语言、汇编语言源程 序、汇编程序、汇编等概念;掌握进位计数制与不同基数的数之间的转换及

运算;计算机中数和字符的表示;“与”、“或”、“非”、“异或”等几种基本的逻辑运算; 第二章80X86计算机组织 1.教学内容 计算机系统概述、存储器、中央处理机和外部设备。 2.基本要求 理解计算机的硬件和软件系统及其关系。掌握计算机的基本结构及总线;存储器的内容、地址及存储器的分段;中央处理机的组成、80X86系列CPU工作寄存器构成和功能,特别是段寄存器和标志寄存器;外设接口、端口和8086/8088的端口地址范围和访问方法。 第三章80X86的指令系统 1.教学内容(重点内容) IBM PC机的寻址方式、IBM PC机的指令系统。 2.基本要求 熟练掌握IBM PC机寻址方式及物理地址的计算;数据传送、算术、逻辑、串处理、控制转移和处理机控制指令六组中的所有指令的格式、操作、及影响的标志位。了解机器语言的指令组成; 第四章汇编语言程序格式 1.教学内容 汇编程序功能、伪操作、汇编语言程序格式、汇编语言程序的上机过程。 2.基本要求 掌握DEBUG程序和命令及能用DEBUG 程序调试和运行简单小程序;汇编语言上机步骤、汇编程序的功能;数据定义及存储器分配、表达式赋值“EQU”和“=”、段定义、程序开始和结束、对准、基数控制等六类伪操作;汇编语言程序格式中的名字、操作、操作数和注释等项。 第五章循环与分支程序设计 1.教学内容 程序设计的一般步骤和基本结构、循环程序设计和分支程序设计 2.基本要求 掌握汇编语言程序的编制步骤和结构化程序设计的三种基本结构;循环的设计方法和多层循环的设计;分支程序的设计方法,并能编制相应的程序。第六章子程序结构 1.教学内容 子程序的设计方法、嵌套与递归子程序、子程序举例和DOS系统功能调用

汇编语言考试复习试题及答案

《汇编语言》考试复习题及答案 一、单项选择题(共20小题,每小题1分,共20分)在每题列出的四个备选项中只有一个是符合要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一存储单元的实际地址称() A.段地址B.偏移地址 C.物理地址D.逻辑地址 2.某存储单元的物理地址是12345H,可以作为它的段地址有()A.2345H B.12345H C.12340H D.1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是()A.XORBX,BX B.ORBX,BX C.ANDBX,BX D.CMPBX,BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是()A.CX≠0且ZF=1B.CX≠0且ZF=0 C.CX≠0或ZF=1D.CX≠0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是() A.DAA校正指令的功能已自动加在AH中 B.进位值在AF中,校正后根据AF内容再加在AH中 C.进位值在CF中,校正后根据CF内容再加在AH中

D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中6.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是()A.指令XORAX,AX执行后,AX内容不变,但设置了标志位 B.指令ORDX,1000H执行后,将DX最高位置1,其余各位置0 C.指令ANDAX,OFH执行后,分离出AL低四位 D.NOTAX,执行后,将AX清0 7.在执行下列指令时,需要使用段寄存器DS的指令是()A.STOSW B.ADDAL,CL C.NEGBX D.INCDA[BX] 8.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是() A.ADDBH,01H B.ORBH,01H C.XORBH,01H D.TESTBH,01H 9.完成对CL寄存器的内容乘以4的正确操作是() A.ROLCL,1B.MUL4 ROLCL,1 C.SHLCL,1D.MOVCL,2 SHLCL,1SHLCL,CL 10.下面各传送指令中,正确的是() A.MOV[DI],[SI]B.MOV[DX+DI],AL C.MOVWORDPTR[BX],0100H D.MOV AL,BX 11.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法()

汇编语言菜单系统

实训一光标漫游 ⒈问题 在25行80列的显示屏内,通过按键“→、←、↑、↓”来改变光标的位置,如按“→”键则光标往右侧走一列,按“↑”键则光标往上走一行的位置,最终通过“Esc”结束程序。 ⒉边界问题 要处理好特殊情况:①光标在第一行,再按“↑”键时;②光标在第一列,再按“←”键时;③光标在第25行,再按“↓”键时;④光标在第80列,再按“→”键时。 ⒊边界问题处理 采用折返的方式:①光标在第1行,再按“↑”键时进到第25行;②光标在第1列,再按“←”键时进到第80行;③光标在第25行,再按“↓”键时进到第1行;④光标在第80列,再按“→”键时时进到第1列。 ⒋实验基础 ①读键:用int 16h的0号功能调用 掌握扫描码和字符码的区别 Mov ah,0 Int 16h ;返回AH=扫描码,AL=字符码 ②定位光标:用int 10h的2号 ③清屏:用int 10h的6号(或7号)功能调用 MOV AH,6 MOV BH,04h

MOV AL,0 MOV CX,0 MOV DX,184fh INT 10h ④相关键的扫描码和字符码 EnterKey EQU 1c0dh EscKey EQU 010bh UpCursor EQU 4800h LeftCursor EQU 4b00h RightCursor EQU 4d00h DownCursor EQU 5000h 5.算法 do { 定位光标 读键 if (al==特殊键) { if (ah==左光标键) 修正列值} else if (ah==右光标键) {修正列值} else if (ah==上光标键) {修正行值} else if (ah==下光标键) {修正行值} } } while (al!=Esc) 6.实验步骤 运行“光标漫游示例.EXE”了解需求。 ①编一小程序获得特殊键“→、←、↑、↓”“Esc、回车”等的扫描码和Asc码值,并记录以备后用;

最新汇编语言复习资料

1 汇编语言程序设计 2 DX:单项选择题 DU:多项选择题 TK:填空题 MC:名词解释 3 v JD:简答题 CXFX:程序分析题 CXTK:程序填空题 BC:编程题4 第1章:基础知识 5 1、在汇编语言程序的开发过程中使用宏功能的顺序是( C )。 DX 6 A、宏定义,宏调用 B、宏定义,宏展开 7 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用 8 2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中9 不可省略的项是( B )。 DX 10 A、名字项 B、操作项 C、操作数项 D、注释项 11 3、可屏蔽中断就是它的请求是否被CPU响应要受( IF )的控制。 DX 12 4、使用LINK连接命令,执行后可生成文件的扩展名为( EXE )。 DX 13 5、在寄存器间接寻址中,如果指令中指定的寄存器为BP,则操作数在堆栈段中,段14 地址在SS寄存器中。 TK 15 6、注释项用于说明程序段或是一条和几条指令的功能,一般用;(或分号) 表16 示注释的开始。 TK 17 7、DOS系统功能调用方式为:(1)置入口参数;(2)中断程序编号送AH寄存器后执18 行INT 21H。 TK 19 8、通常主程序和子程序间参数传送的方法有三种:用寄存器传递、用存储单元传递、20 用堆栈传递(顺序可调换)。 TK 21 9、中断是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该22 事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为中23 断源。 TK

24 10、在字符串操作指令中,DS∶SI指向源串,ES∶DI指向目的25 串。 TK 26 11、计算机系统通过接口与外围设备通信。 TK 27 12、键盘I/O、显示I/O和打印I/O分别对应16H、10H和 17H 28 号中断。 TK 29 13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。每个字的第一个字节为30 显示字符的ASCII码,第二个字节为显示字符的属性。 TK 31 14、简述上机运行汇编语言程序的过程。 JD 32 答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序33 代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。 34 15、简述程序中指令和伪指令的区别。 JD 35 答:能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。36 伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可37 加在汇编程序的任何地方,但它们并不产生机器指令。 38 16、十六进制数88H,可表示成下面几种形式,请找出错误的表示(④)。 DX 39 ①无符号十进制数136 40 ②带符号十进制数-120 41 ③压缩型BCD码十进制数88 42 ④ 8位二进制数-8的补码表示 43 17、指令指针寄存器是(IP )。 DX 44 18、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B) DX

基础的汇编语言小程序

基础的汇编语言小程序 1.1 Hello World !程序(完整段) (注:所有的标点符号以及空格回车均为英文输入法状态下的,否则报错!) DATAS SEGMENT STRING DB ‘Hello World !’,13,10,’$’ DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA DX,STRING MOV AH,9 INT 21H MOV AH,4CH INT 21H CODES ENDS END START 1.2 Hello World !程序(简化段) .MODEL SMALL .DATA

STRING DB’Hello World !’,13,10,’$’ .STACK .CODE .STARTUP LEA DX,STRING MOV AH,9 INT 21H .EXIT END 2.1完整段的求3+5的和 DATA SEGMENT FIVE DB 5 DATAS ENDS STACKS SEGMENT DB 128 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CD:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AL,FIVE

ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 MOV AH,4CH INT 21H CODES ENDS END START 2.2;简化段的求3+5的和.MODEL SMALL .DATA FIVE DB 5 .STACK DB 128 DUP (?) .CODE .STARTUP MOV AL,FIVE ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 INT 21H

扬州大学汇编语言课后习题

练习一 1.在计算机内部,计算机能够直接执行的程序语言是。 A.汇编语言 B。C++语言 C.机器语言 D。高级语言 2.在堆栈段中,存放栈顶地址的寄存器是。 A.IP B.SP C. BX D. BP 3.指令指针寄存器IP用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向。A.下一条指令的首地址B.下一条指令的地址 C.当前指令的首地址D.当前指令的地址 4.编译程序的功能是。 A.检查源程序中的语法错误和逻辑错误 B.将源程序编译成目标程序 C.改正源程序中的语法错误 D.将高级语言源程序翻译成汇编语言源程序 5.用户为了解决自己的问题,用汇编语言所编写的程序,称为。 A.目标程序B.源程序C.可执行程序D.汇编程序 6.计算机中用来存储程序、数据等信息的记忆装置是。 A.控制器 B.运算器 C.CPU D.存储器 7.在宏汇编中,源程序必须通过___________生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。 8 当 SS =3000H,SP =0100H 时,执行 PUSH AX 指令后,堆栈顶部的物理地址 是() A.30100H B.30098H C.30102H D.300FEH 9 设B分别以原码、补码及反码表示时,则对应的十进制数依次是() A.-82、-126、-2 B.-2、-125、126 C.-2、-126、-125 D.-82、-125、125 10 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为__________________。 11 若物理地址为2D8C0H,偏移量为B6A0H,则段地址为 _________。 练习二 1. 8086在基址变址的寻址方式中,基址、变址寄存器分别是()。 A.AX或CX、BX或CX B.BX或BP、SI或DI C.SI或BX、DX或DI D.CX或DI、CX或SI 2. 设(SS)=338AH,(SP)=0450H,执行PUSH BX和PUSHF两条指令后,堆栈顶部的物理地址是()。A.33CECH B.33CF2H C.33CF4H D.33CE8H 3.设(AX)=0C544H,在执行指令ADD AH,AL后,相应的状态为()。 A.CF=0、OF=0 B.CF=0、OF=1 C.CF=1、OF=0 D.CF=1、OF=1 4.设DS=2000H,SS=1500H,(ES)=3000H,(SI)=00B0H,(BX)=1000H,(BP)=0020H,指出下列指令的源操作数的寻址方式是什么?若该操作数为存储器操作数,请计算其物理地址。 (1) MOV AX,DS:[0100H]

汇编语言实现文本编辑器

汇编语言课程设计 题目文本方式下字处理程序的设计与实现 学院计算机科学与技术学院 专业计算机科学与技术 班级计算机科学与技术0705 课程设计任务书 题目: 文本方式下字处理程序的设计与实现 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等 具体要求) 理解键盘和显示器接口的工作原理,掌握BIOS键盘和显示器中断调用的使用方法,掌握复杂内存数据结构的定义和管理方法。具体的设计任务及要求: 1)清晰且易于操作的用户界面;动态显示光标的当前位置; 2)在文本编辑区接受并保存输入信息; 3)光标上移,下移,左移,右移; 4)允许删除当前光标前的字符; 5)将编辑文本存盘,读出并显示硬盘中的指定文件。(任选) 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料:

1)《IBM—PC汇编语言程序设计实验教程》3.3节 2)《IBM—PC汇编语言程序设计(第2版)》9.1节 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日 一、系统描述 1、目的 (1)掌握计算机汇编语言的使用。学完汇编课程,理解和掌握键盘和显示器接口的工作原理,掌握BIOS键盘和显示器中断调用的使用方法,掌握复杂内存数据结构 的定义和管理方法。 (2)通过设计、编制、调试一个文本方式下字处理程序。实现一个简单的文本编辑器的基本功能 2、设计内容 1)清晰且易于操作的用户界面; 2)动态显示光标的当前位置; 3)在文本编辑区可以输入字符信息; 4)光标上移,下移,左移,右移,还可以回车,使用home键、end键退格键; 5)允许删除当前光标前的字符; 6)将编辑文本存盘,读出并显示硬盘中的指定文件。 3、开发平台 所使用的系统:Windows XP 程序开发工具:Masn for Windows 6.0 集成实验开发环境 序设计语言:IBM-PC 汇编语言 二、文本编辑译系统的概要设计 文本编辑程序要实现简单的文本编辑器基本功能。 1.设计一个友好,易于操作的界面,界面可仿照windows记事本,但windows记事本 的菜单项不好制作,所以将主要功能说明制作到边框,方便使用即可。并且实现在

基本演示汇编语言实验操作方法

基本演示1汇编语言实验操作方法 一.实验的基本方法(MASM宏汇编子目录下) 1.在DEBUG下运行汇编指令或简单小程序 在DEBUG提示符下,用汇编命令A:输入汇编指令或简单小程序,用单步命令T 或全程命令G来执行,并检查执行中间结果与最后结果。 2.标准汇编程序上机方法 A.建立ASM文件,用https://www.doczj.com/doc/8912833455.html,全屏幕编辑文件或其他编辑文件建立扩展名为ASM的源程序. B.用MASM(或ASM)产生扩展名为OBJ目标文件。 C.用LINK产生扩展名为EXE可执行文件。 D.在DEBUG下,把文件调入内存,调试程序。 E.在DOS下可直接执行扩展名为EXE的文件。(详细过程) 二.汇编语言的工作环境. A.硬件环境 IBM-PC及其系列机 内存256K字节以上 外存:硬盘或至少一个软驱 CPU:80586以上 显示器:单色或彩色显示器 键盘:标准ASCII码键盘 B.软件环境 编缉程序:https://www.doczj.com/doc/8912833455.html,或其他编缉程序 汇编程序:MASM.EXE或ASM.EXE 连接程序:LINK.EXE 调试程序:https://www.doczj.com/doc/8912833455.html,或DEBUG.EXE

A命令 在命令A后跟地址,按回车输入程序,可以连续输入,当按下回车后,就退回到DEBUG下。 T命令

T命令为跟踪命令。 G命令 该地址指定了运行的起始地址,如不指定则从当前的cs:ip开始运行EDIT.EXE

怎样生成.exe文件

生成.obj文件

基本演示2DEBUG命令的使用 A.程序调用命令 C>DEBUG[D:][PATH][FILENAME[.EXT]][PARM1][PARM2] 其中,文件名是被调试文件的名字。如未键入文件名。可用DEBUG命令N和L 把需要文件装入存储器后再调试。D指定驱动器,PATH为路径,FILENAME为文件名,PARM为命令参数 B.显示存储单元命令 -D[ADDRESS]或;ADDRESS地址 -D[RANGE];RANGE范围 C.修改存储单元内容命令 -E ADDRESS[LIST] D.检查和修改寄存器内容命令 -R[REGISTER NAME];Register name寄存器名字 E.汇编命令 -A[ADDRESS] F.跟踪命令 -T[=ADDRESS][VALUE];Value变量值 G.运行命令 -G[=ADDRESS][ADDRESS2[ADDRESS3] H.反汇编命令 -U[ADDRESS] -U[RANGE]

汇编课程设计成绩管理系统+源代码

XXXXX 课程设计说明书 汇编语言课程设计 班级: 网络B101 姓名: XXX 学号XXX 设计题目: 学生成绩管理 设计时间: 2012.12.09 至2012.12.21 指导教师: XXX 评语:_______________________________ _______________________________________ _______________________________________ _______________________________________ _______________________________________ 评阅成绩:___________评阅教师:____________ 一、课程设计的目的

进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。二、设备与环境 PC兼容机、Windows操作系统、汇编程序masm for windows 2010 三、课程设计要求 1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。 2.遵循模块化、结构化的程序设计方法。 3.要求程序必须正确。 4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。 5.要求程序结构合理,语句使用得当。 6.适当追求编程技巧和程序运行效率。 四、课程设计的课题和分析 题目:学生成绩管理 分析:建立学生成绩文档;输入学生各门功课成绩;(假设3门功课);修改指定学号的学生成绩;统计指定学号的学生的平均成绩、总成绩,并在屏幕上显示;统计指定学号课程的平均成绩,并在屏幕上显示;每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59)此处可以以表格的形式给出数据,或者以坐标曲线的形式给出。对学生成绩记录进行检索(按学号、姓名), 成绩排序(按总成绩降序排列), 退出,最好用到文件处理。 五、流程图、总体设计、详细设计 学生成绩管理,最基本能实现的的功能是输入学号,同时显示该学生的基本的信息,我设计的成绩管理系统功能还包括了显示该生的语文,英语,数学三门学科的成绩,求出了该生的总分,以及该生的平均分,动态输入学生的成绩,而且成绩是按照三位数显示的,可以输入任意多的学生人数,每个学生都是三门课程,最后统计输入所有学生的各科各个分数段的人数,最后显示出所有学生的成绩排名情况。为了使系统更实际一些,我设计的系统包括建立了文件,方便学生

第3章-MCS-51系列单片机的指令系统和汇编语言程序范文

第3章MCS一51系列单片机的指令系统 和汇编语言程序 3·1汇编指令 3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。 3·1·2请总结: (1)汇编语言程序的优缺点和适用场合。 (2)学习微机原理课程时,为什么一定要学汇编语言程序? 3·1·3MCS一51系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。 3·1·4要访问片内RAM,可有哪几种寻址方式? 3·1·5要访问片外RAM,有哪几种寻址方式? 3·1·6要访问ROM,又有哪几种寻址方式? 3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。 3·1·8试分别针对51子系列与52子系列,说明MOV A,direct指令与MOV A,@Rj 指令的访问范围。 3·1·9传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为什么访问ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM? 3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。3·1·11请选用指令,分别达到下列操作: (1)将累加器内容送工作寄存器R6. (2)将累加器内容送片内RAM的7BH单元。 (3)将累加器内容送片外RAM的7BH单元。 (4)将累加器内容送片外RAM的007BH单元。 (5)将ROM007BH单元内容送累加器。 3·1·12 区分下列指令的不同功能: (l)MOV A,#24H 与MOV A.24H (2)MOV A,R0与MOV A,@R0 (3)MOV A,@R0与MOVX A,@R0 3·1·13设片内RAM 30H单元的内容为40H; 片内RAM 40H单元的内容为l0H; 片内RAM l0H单元的内容为00H; (Pl)=0CAH。 请写出下列各指令的机器码与执行下列指令后的结果(指各有关寄存器、RAM单元与端口的内容)。 MOV R0,#30H MOV A,@R0 MOV RI,A MOV B,@Rl MOV @R0,Pl MOV P3,Pl MOV l0H,#20H MOV 30H,l0H

汇编语言,led点亮

《单片机应用设计》课程设计 专业:自动化 姓名: 学号: 同组人员: 指导教师: 日期:

单片机应用设计课程设计 设计题目 1个按键:无按键时,8个LED全亮,按下1次,8个Led依次点亮,持续1S。连续按两次,8个Led以相反的次序依次点亮。

单片机应用设计课程设计 第一部分系统设计分析 硬件分析 1.LED灯采用共阳极接法,本题中则将P1口对应各位赋低电平即可点亮LED灯。 2.p 3.5接按键。 软件分析 第二部分硬件电路设计及实现

单片机应用设计课程设计 第三部分软件设计 ORG 0000H LJMP MAIN ;中断入口 ORG 000BH LJMP DIER KEY BIT P3^4 LED EQU P1 MAIN: MOV R2,#0 ;R2清零 MOV LED,#0 ;八个二极管全亮 MOV R3,#10 MOV TMOD,#01H;选择定时器0的定时器方式1 ;赋初值3CB0H即15536 MOV TL0,#0B0H MOV TH0,#3CH SETB EA ;打开总中断 SETB ET0 ;允许定时器0中断 ;第一次按键检测 KEY_SCAN:JNB KEY, YN1 ;为零则转移,即为按下 AJMP KEY_SCAN YN1:LCALL DEL1MS JNB KEY,Y1 ;判断是否真的按下,真的按下了,则转移 AJMP KEY_SCAN Y1:LCAL L DEL1MS JB KEY,SSH ;检测是否松手,松手转移 AJMP Y1 SSH:SETB TR0 ;打开定时器0 CJNE R2,#1,$ ;检测R2是否为一,不为一则等待 CLR TR0 ;关闭定时器 AJMP MAIN ;跳回主程序 ;第二次键盘检测,每50ms检测一次,检测10次,即为500ms DIER:JNB KEY, LED_2 ;检测键盘是否按下,按下则转移 DJNZ R3,CZ ;R3减一是否为零,不为零则转移 AJMP LED_1 ;延迟500ms后没有第二次按下,跳到LED_1 LED_1:MOV R4,#8 MOV A,#0FEH ;LED顺序循环程序 LOOP1:MOV LED,A LCALL DEL1S

华中科技大学 80X86汇编语言程序设计试卷

《汇编语言程序设计》网络学院模拟试卷一2004.4班级________________ 姓名______________ 学号______________ 成绩______ 一、改错题(10分,每题1分,在错误处划线,线下写上正确答案) 1. SHR BH, 8 2. ADD [BX], –15 3. LEA POINT, BUF 4. IN DX, 200 5. PUSH DH 6. MUL 25 7. XLAT BX, TAB 8. REPNZ MOVSW 9. MOV AX, 2[SI][DI] 10. MOV [BX], [SI] 二、单选题(20分,每题1分) 1.MOV指令的特点是________。 A.影响DF B.影响SF C.影响CF D.不影响标志位2.使用寄存器间接寻址方式访问堆栈中某变量时,要选用________寄存器。 A.BX B.BP C.SI D.SP 3.8086标志寄存器中的三个控制标志是________。 A. IF、PF、SF B.DF、OF、CF C.DF、IF、TF D.TF、AF、IF 4.若有符号数运算的结果溢出,则置________为1。 A.OF B.CF C.SF D.IF 5.若某存贮器操作数的偏移地址在SI中,访问该操作数应采用________寻址方式。 A.立即B.寄存器C.寄存器问址D.直接 6.串操作指令中,目的串的逻辑地址应为________。 A.DS:[SI] B.DS:[DI] C.ES:[DI] D.ES:[SI] 7.不在本模块定义而在本模块中引用的符号称________符号。 A.公共B.局部C.自定义D.外部 8.若(CL)= 4,(AX)=0FF0FH,执行语句“ROR AX,CL”后,(AX)=________。 A.0FFFFH B.0FFF0H C.0F0FFH D.0FFFH 9.已知AL中存放着一个压缩BCD码,为实现AL减1操作,应选用________指令序列。 A.DEC AL B.SBB AL,0 C.SUB AL,1 D.SUB AL,1 AAS DAS AAS DAS 10.要将BL中的8位数据送到1234H端口号的外部设备中去,应选用________指令序列。 A.OUT 1234H,BL B.MOV DX,1234H OUT DX,BL C.MOV AL,BL D.MOV DX,1234H MOV DX,1234H MOV AL,BL OUT DX,AL OUT AL,DX 11.已知AX,BX中均为有符号 ...数据,当进行字.除法时,应采用________指令序列。 A.XOR DX,DX B.CBW C.IDIV BX D.CWD DIV BX IDIV BX IDIV BX

汇编语言版学生管理系统

汇编语言课程实习报告 实习题目学生成绩管理系统 学生姓名 班级(学号) 院系 指导老师 提交时间 成绩

目录 题目一:学生成绩管理系统 (3) 二、总体设计 (4) 程序主界面: (7) 主程序流程图 (12) 详细设计 (14) 菜单模块 (14) 输入模块 (15) 主程序代码 (17) 调试过程 (28) 总结: (31) 参考文献: (32)

题目一:学生成绩管理系统 基本功能: 1、输入学生各门功课成绩;(假设3门功课,每门功课有唯一编号) 2、对学生成绩记录进行查询检索(按学号、姓名) 3、能修改指定学号的学生成绩; 4、对学生成绩排序(按总成绩降序排列); 5、、统计指定学号的学生的平均成绩在屏幕上显示; 6、统计指定编号课程的平均成绩在屏幕上显示; 7、每门课程成绩分析:在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59) 8、退出系统功能

二、总体设计 功能结构图设计 依据程序的功能需求,描述该系统功能的结构图如下: 图1 系统功能结构图

student struc names db 18 dup ('$') maths dw? english dw? chinese dw? total dw0 avg dw0 student ends DATAS SEGMENT stu_array student 10 dup(<>) 构建了student结构体,在存储方面使得结构变得简单。insert proc near inc num scur1 0 altert mes7 scur 1 altert mes4 sub bh,bh mov bl,num bindec bx crlf mov ah,09 lea dx,mes int 21h sub ah,ah mov al,28d mul num mov si,ax scur 2 mov ah,0ah lea dx,stu_array[si].names sub bh,bh mov bl,stu_array[si+1].names mov stu_array[si+bx+2].names,'$' int 21h scur 3 call decibin mov stu_array[si].maths,bx add stu_array[si].total,bx scur 4 call decibin mov stu_array[si].english,bx add stu_array[si].total,bx scur 5 call decibin

指令系统及汇编语言程序设计

第3章指令系统及汇编语言程序设计 一、简答题 1、80C51系列单片机的指令系统有何特点? 2、80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何? 3、访问特殊功能寄存器SFR可以采用哪些寻址方式? 4、访问内部RAM单元可以采用哪些寻址方式? 5、访问外部RAM单元可以采用哪些寻址方式? 6、访问外部程序存储器可以采用哪些寻址方式? 7、为什么说布尔处理功能是80C51单片机的重要特点? 8、对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问? 9、试根据指令编码表写出下列指令的机器码。 (1)MOV A,#88H (2)MOV R3,50H (3)MOV P1.1,#55H (4)ADD A,@R1 (5)SETB 12H 10、完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指 令序列。 (1)将R0的内容传送到R1; (2)内部RAM单元60H的内容传送到寄存器R2; (3)外部RAM单元1000H的内容传送到内部RAM单元60H; (4)外部RAM单元1000H的内容传送到寄存器R2; (5)外部RAM单元1000H的内容传送到外部RAM单元2000H。 11、11、若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段 后上述各单元内容的变化。 MOV A,@R1 MOV @R1,40H MOV 40H,A MOV R1,#7FH 12、若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20)=0FH, 试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指 出CY、AC、和OV的值。 (1)MOV A,@R0 (2)ANL 40H,#0FH (3)ADD A,R4 (4)SWAP A (5)DEC @R1 (6)XCHD A,@R1 13、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、 42H单元中的内容各为多少? MOV A,50H MOV R0,A MOV A,#00H MOV @R0,A MOV A,3BH MOV 41H,A MOV 42H,41H 14、试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。

汇编语言小程序

16进制转化为10进制STACK SEGMENT STACK'STACK' DW100H DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT KEYBUFFER DB100 ;DB ? ;DB 100 DUP(?) DECIMAL DB 5 DUP(?) STRING1 DB'PLEASE INPUT DECIMAL DATA:$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,CS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SS,AX LEA SP,TOP LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,0AH LEA DX,KEYBUFFER ;MOV AX,23456 INT 21H ;LEA SI,KEYBUFFER MOV AX,DX LEA DI,DECIMAL CALL DISPAX MOV AH,4CH MOV AL,0 INT 21H DISPAX PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI LEA DI,DECIMAL

CALL TRANS16TO10 MOV CX,5 LEA DI,DECIMAL+4 MOV AH,2 DISPAXD: MOV DL,[DI] ADD DL,30H DEC DI INT 21H LOOP DISPAXD POP DI POP DX POP CX POP BX POP AX RET DISPAX ENDP TRANS16TO10 PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV BX,10 MOV CX,5 LOOP1: XOR DX,DX DIV BX MOV[DI],DX INC DI LOOP LOOP1 LEA DX,DECIMAL MOV AH,09H INT 21H POP DI POP DX POP CX POP BX POP AX RET TRANS16TO10 ENDP

华南师范大学汇编语言试卷

一、填空题:(每小题2分,共10分) 1.数-27的补码表示是__11100101____(8位),扩展到16位为__1111111111100101_。 2.一个字5678H存到地址[1234H]单元中,则56H存放在 1235H 单元,78H存放 在 1234H 单元。 3.堆栈的栈顶由堆栈指针寄存器指出,非栈顶字由基址指针寄存器指出。 4.编程用的操作数有立即数、寄存器操作数、内存操作数。 5.中断向量是中断子程序的入口,中断向量表是计算机中断服务程序中的一个向量表,它纪录着全部的中断向量 二、改错题(每小题2分,共20分) (在不改变原题意的前提下,在试卷上画出每小题的错误之处,并在右边予以改正。) 1.MOV CX,SEG DATA MOV ES,CX MOV DS,ES MOV DS,CX 2.B DW 100 MOV AL,B MOV AX,B 3.MOV DI,30H MOV [DI],16H MOV WORD PTR [DI],16H 4.MOV AX,BX, IN AX,BX IN AX,DX 5.ADD SI,BX ADD AL,BL DAA

SUB [DX],CX SUB WORD PTR [DX],CX 7. PUSH AL PUSH AX 8. MOV BX,16 MOV AL,256 MOV AX,256 9. INC AX,1 INC AX 10. ADD 80H,AL ADD AL,80H IN 80H,AL IN AL,80H 三、阅读程序(根据题目要求写出结果每小题6分,共30分)(可以给指令另加注释,也可以不加。) 1.下面程序的功能是什么? MOV AX,X CMP AX,Y JGE LAB XCHG AX,Y LAB:MOV X,AX 选择X,Y中的较大值存入X中 2. 执行下列指令后AX、BX寄存器的内容? MOV SI,10H

汇编语言版学生管理系统演示教学

汇编语言版学生管理 系统

汇编语言课程实习报告 实习题目学生成绩管理系统 学生姓名 班级(学号) 院系 指导老师 提交时间 成绩

目录 题目一:学生成绩管理系统 (4) 二、总体设计 (5) 程序主界面: (8) 主程序流程图 (13) 详细设计 (15) 菜单模块 (15) 输入模块 (16) 主程序代码 (18) 调试过程 (29) 总结: (32) 参考文献: (33)

题目一:学生成绩管理系统 基本功能: 1、输入学生各门功课成绩;(假设3门功课,每门功课有唯一编号) 2、对学生成绩记录进行查询检索(按学号、姓名) 3、能修改指定学号的学生成绩; 4、对学生成绩排序(按总成绩降序排列); 5、、统计指定学号的学生的平均成绩在屏幕上显示; 6、统计指定编号课程的平均成绩在屏幕上显示; 7、每门课程成绩分析:在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59) 8、退出系统功能

二、总体设计 功能结构图设计 依据程序的功能需求,描述该系统功能的结构图如下: 图1 系统功能结构图

student struc names db 18 dup ('$') maths dw? english dw? chinese dw? total dw 0 avg dw 0 student ends DATAS SEGMENT stu_array student 10 dup(<>) 构建了student结构体,在存储方面使得结构变得简单。insert proc near inc num scur1 0 altert mes7 scur 1 altert mes4 sub bh,bh mov bl,num bindec bx crlf mov ah,09 lea dx,mes int 21h sub ah,ah mov al,28d mul num mov si,ax scur 2 mov ah,0ah lea dx,stu_array[si].names sub bh,bh mov bl,stu_array[si+1].names mov stu_array[si+bx+2].names,'$' int 21h scur 3 call decibin mov stu_array[si].maths,bx add stu_array[si].total,bx scur 4 call decibin mov stu_array[si].english,bx add stu_array[si].total,bx

相关主题
相关文档 最新文档