文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言复习

汇编语言复习

汇编语言复习
汇编语言复习

汇编语言考试复习范围:

课本的习题:

p112(习题三)7-14

7.什么是堆栈操作?以下关于堆栈操作的指令执行后,SP的值是多少?

PUSH AX

PUSH CX

PUSH DX

POP AX

PUSH BX

POP CX

POP DX

堆栈被定义为一种先进后出的数据结构,即最后进栈的元素将被最先弹出来。堆栈从一个称为栈底的位置开始,数据进入堆栈的操作称为压入(或压栈),数据退出堆栈的操作称为弹出,每进行一次弹出操作,堆栈就减少一个元素,最后一次压入的元素,称为栈顶元素,压入弹出操作都是对栈顶元素进行的堆栈的两种基本的操作。

在进行以上一系列堆栈操作后,SP指针的值是原SP-2。

8用汇编语言指令实现以下操作。

(1)将寄存器AX、BX和DX的内容相加,和放在寄存器DX中。

ADD AX,BX

ADD DX,AX

(2)用基址变址寻址方式(BX和SI)实现AL寄存器的内容和存储器单元BUF中的一个字节相加的操作,和放到AL中。

ADD AL,BYTE PTR [BX][SI]

(3)用寄存器BX实现寄存器相对寻址方式(位移量为100H),将DX的内容和存储单元中的一个字相加,和放到存储单元中。

ADD 100H[BX],DX

(4)用直接寻址方式(地址为0500H)实现将存储器中的一个字与立即数3ABCH相加,和放回该存储单元中。

ADD [0500H],3ABCH

(5)用串操作指令实现将内存定义好的两个字节串BUF1和BUF2相加后,存放到另一个串BUF3中的功能。

……

MOV CX,COUNT

MOV SI,OFFSET BUF1

MOV DI,OFFSET BUF3

MOV BX,OFFSET BUF2

AGAIN:LODSB ;把SI寻址的源串的数据字节送AL或数据字送AX中

ADD AL,[BX]

STOSB ;把AX或AL中的数据存到DI所指寄存器

INC BX

DEC CX

JNZ AGAIN

……

9指出下列指令中,源操作数及目的操作数的寻址方式。

(1)SUB BX,[BP+35] ;寄存器寻址、寄存器相对寻址

(2)MOV AX,2030H ;寄存器寻址、立即寻址

(3)SCASB ;隐含操作数为寄存器寻址和寄存器间接寻址

(4)IN AL,40H ;寄存器寻址、立即寻址

(5)MOV [DI+BX],AX ;基址加变址寻址、寄存器寻址

(6)ADD AX,50H[DI] ;寄存器寻址、寄存器相对寻址

(7)MOV AL,[1300H] ;寄存器寻址、直接寻址

(8)MUL BL ;寄存器寻址、目的操作数为隐含寄存器寻址

10已知(DS)= 1000H,(SI)= 0200H,(BX)= 0100H,(10100H)= 11H,(10101H)= 22H,(10600H)= 33H,(10601H)= 44H,(10300H)= 55H,(10301H)= 66H,(10302H)= 77H,(10303H)= 88H,试分析下列各条指令执行完后AX寄存器的内容。

(1)MOV AX,2500H (AX)=2500H

(2)MOV AX,500H[BX] (AX)==4433H

(3)MOV AX,[300H] (AX)=6655H

(4)MOV AX,[BX] (AX)=2211H

(5)MOV AX,[BX][SI] (AX)=6655H

(6)MOV AX,[BX+SI+2] (AX)=8877H

11判断下列指令是否有错,如果有错,说明理由。

(1)SUB BL,BX ;两个操作数的宽度不一样

(2)MOV BYTE PTR[BX],3456H ;将16位的立即数传送到一个字节的内存单元(3)SHL AX,CH ;移位指令的移位位数用CL给出,不能用CH。

(4)MOV AH,[SI][DI] ;不能用两个变址寄存器来实现寻址操作

(5)SHR AX,4 ;只有当移位位数为1时,才能用立即数表达

(6)MOV CS,BX ;不能对CS实现传送操作

(7)MOV 125,CL ;立即数不能做目的操作数

(8)MOV AX,BYTE PTR[SI] ;源操作数限定为字节,与目的操作数宽度不一致(9)MOV [DI],[SI] ;两个操作数不能同时为内存数

12设(DS)= 1000H,(ES)= 2000H,(SS)= 3000H,(SI)= 0080H,(BX)= 02D0H,(BP)= 0060H,试指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?

(1)MOV AX,0CBH 立即寻址

(2)MOV AX,[100H] 直接寻址,物理地址为:10100H

(3)MOV AX,[BX] 寄存器间接寻址,物理地址为:102D0H

(4)MOV AX,[BP] 寄存器间接寻址,物理地址为:20060H

(5)MOV AX,[BP+50] 寄存器相对寻址,物理地址为:200B0H

(6)MOV AX,[BX][SI] 基址加变址寻址,物理地址为:10350H

13分别说明下列每组指令中的两条指令的区别.

(1)AND CL,0FH 按位相“与”,高4位为“0000”,低4位保留原值;

OR CL,0FH 按位相“或”,高4位为原值,低4位为“1111”。

(2)MOV AX,BX 将BX寄存器的内容传送到AX寄存器中;

MOV AX,[BX] 将BX寄存器所指的内存单元的内容送AX寄存器中。

(3)SUB BX,CX BX寄存器内容减去CX寄存器的内容,结果送回到BX;

CMP BX,CX BX内容减去CX内容,但结果不送回,而根据标志位的情况做进一步的动作。

(4)AND AL,01H AL内容与01H相“与”,结果为“0000000x”送回AL寄存器;

TEST AL,01H AL内容与01H相“与”,结果为“0000000x”不送回AL 寄存器,而根据标志位(ZF)情况做进一步的动作。

(5)JMP NEAR PTR NEXT NEXT所指指令在当前指令的同段内(16位地址范围);

JMP SHORT NEXT NEXT所指指令在当前指令的8位地址范围内。

(6)ROL AX,CL 循环左移,进位标志位不参与循环;

RCL AX,CL 循环左移,进位标志位参与循环。

(7)PUSH AX 将AX内容存入栈顶指针处,即进栈操作;

POP AX 将栈顶内容弹出装入AX寄存器中,即出栈操作。

14试分析以下程序段执行完后BX的内容为何?

MOV BX,1030H

MOV CL,3

SHL BX,CL

DEC BX

程序执行完后,BX=817FH,执行过程如下。

P140(习题四)6-11

6在BUF1变量中依次存储了5个字数据,接着定义了一个名为BUF2的字单元,表示如下:

BUF1 DW 8765H,6CH,0,1AB5H,47EAH

BUF2 DW ?

(1)设BX中是BUF1的首地址,请编写指令将数据50H传送给BUF2单元。

ADD BX,10

MOV WORD PTR[BX],50H

(2)请编写指令将数据FFH传送给数据为0的单元。

ADD BX,4

MOV WORD PTR[BX],FFH

7下面是一个数据段的定义,请用图表示它们在内存中存放的形式。

DA TA SEGMENT

A1 DB 25H,35H,45H

A2 DB 3 DUP(5)

A3 DW 200,3AB6H

A4 DW 3000H,6A6FH

DA TA ENDS

A1

A2

A3

A4

8说明下列语句所分配的存储空间及初始化的数据值。

(1)BYTE_V AR DB ‘BYTE’,21,-42H,3 DUP(0,?,2 DUP(2,3),?)

(2)WORD_V0),?,-8,

BYTE_V AR WORD_V AR

9在下列数据传送程序段中有些使用不当的语句,请改正之。

A D

B 10H,20H,‘OPQ’,4FH

B DB N DUP(?);改为B DB 6 DUP(?)

MOV DI,A ;改为MOV DI,OFFSET A

MOV SI,B ;改为MOV SI,OFFSET B

MOV CX,LENGTH A ;改为MOV CX,LENGTH B CC:MOV AX,[DI]

MOV [SI],AX

INC SI

INC DI

DEC CX ;去掉该句

LOOP CC

10以下程序段落拟实现在同一个段内的调用过程,试判断可行性,如不能实现,请改正。

CODE SEGMENT

ASSUME CS:CODE

BEGIN:

CALL SUB1

CALL SUB2

SUB1 PROC FAR

MOV AX,X

MOV BX,Y

MUL BX

RET

SUB1 ENDP

CODE ENDS

END START

SUB1应为NEAR型,过程SUB2并未定义,应定义SUB2。程序段落改为:

CODE SEGMENT

ASSUME CS:CODE

BEGIN:

CALL SUB1

CALL SUB2

SUB1 PROC NEAR

MOV AX,X

MOV BX,Y

MUL BX

RET

SUB1 ENDP

SUB2 PROC NEAR

……

RET

SUB2 ENDP

CODE ENDS

END BEGIN

11有一个数据段定义了如下6个变量,请写出该数据段。

(1)BUF1为十进制数字节变量:64;

(2)BUF2为字符串变量:‘Teacher’;

(3)BUF3为十六进制数字节变量:2FH;

(4)BUF4为双字变量:657AH;

(5)BUF5为字变量:657AH;

(6)BUF6为二进制数字节变量:10101101B。

DA TA SEGMENT

BUF1 DB 64

BUF2 DB ‘Teacher’

BUF3 DB 2FH

BUF4 DD 657AH

BUF5 DW 657AH

BUF6 DB 10101101B

相关的习题:

1.以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理

地址。

⑴ 12F8:0100 ⑵ 1A2F:0103 ⑶1A3F:0003 ⑷ 1A3F:A1FF

2. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形

式表示):03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。

3. 分别指出下列指令中源操作数和目标操作数的寻址方式。

⑴ MOV BX,12

⑵ MOV AL,128

⑶ MOV [BX],DX

⑷ MOV DS,AX

⑸ MOV VAR,8;目的操作数是直接寻址方式

⑹ MOV [1000H],DX

⑺ MOV 6[BX],CX

⑻ MOV AX,[BX][SI]

⑼ MOV TAB[BP][DI],AL

4. 在80X86系统中,设(DS)=1000H,(ES)=2000H,(SS)=1200H,(BX)=0300H,(SI)=0200H,(BP)=0100H,VAR的偏移量为0060H,若目标操作数为存储器操作数,请计算目标操作数的物理地址是多少?

⑴ MOV BX,12 ⑵ MOV AL,128

⑶ MOV [BX],DX ⑷ MOV ES:[SI],AX

⑸ MOV VAR,8 ⑹ MOV [1000H],DX

⑺ MOV 6[BX],CX ⑻ MOV [BX][SI],AX

⑼ MOV 6[BP][SI],AL

5. 指出下指令的不同:

⑴ MOV AX,3000H 与 MOV AX,[3000H]

⑵ MOV AX,MEM 与 MOV AX,OFFSET MEM

⑶ MOV AX,MEM 与 LEA AX,MEM

6. 指出下列指令的错误:

⑴MOV [AX],BX ⑵ MOV AL,1280

⑶ MOV [BX],9 ⑷ MOV DS,1000H

⑸ MOV VAR,[BX] ⑹ MOV M1,M2

⑺MOV 6,CX⑻ MOV AX,[SI][DI]

⑼ MOV CS,AX ⑽ MOV BX,OFFSET VAR[SI]

8. 自BUFFER单元开始连续存放着两个字型数据,编程序求它们的和,并把结果存放在这两个数据之后。

9. 写出把首址为BUF的字型数组的第4个字送到AX寄存器的指令,要求使用以下几种寻址方式:

⑴直接寻址方式

⑵使用BX的寄存器间接寻址方式

⑶使用BX的寄存器相对寻址方式

10. 设(DS)=1000H,(BX)=0300H,(SI)=0002H,(DI)=0100H,自1000:0300单元开始存有以下数据(用十六进制形式表示):12 34 56 78 90 AB CD EF,试说明下列各条指令执行后目标操作数的内容。

⑴ ADD BX,12 ⑵ MOV DX,[0300H]

⑶ SUB BYTE PTR [BX],8 ⑷ MOV AX,[BX][SI]

⑸ MOV CX,5[BX] ⑹ MOV DX,4[BX][SI]

11. 编程序使:

⑴使AL的各位变反。

⑵ BX寄存器低四位置1。

⑶ AX寄存器的低四位清0。

⑷使CX寄存器的低四位变反。

⑸用TEST指令测试AL寄存器的位0和位6是否同时为0,若是则把0送DH寄存器,否则把1送DH寄存器。

12.下列语句各为变量分配了多少字节?

⑴ N1 DB 5

⑵ N2 DB 123

⑶ N3 DB ‘123’

⑷ N4 DB 80,?,80 DUP (0)

⑸ N5 DW 1,2,3

⑹ N6 DD 6,100

⑺ N7 DD N3

⑻ N8 DW N4

⑼ N9 DW N4+2

13.对于第12题,若N1的地址为1470:0000,其后的变量依次连续存放,试给出各变量的偏移量。N7~N9变量的值是多少?14.如果定义了如第12题所示的变量,下列指令执行的结果是什么(若语句正确,则给出执行结果;若不正确,说明错误原因)?

⑴ ADD N1,10

⑵ MOV AL,N2

⑶ SUB N3,N2

⑷ MOV AL,N3+2

⑸ LEA DX,N4+2

⑹ XOR N5,0FH

⑺ MOV N4+1,CX

⑻ AND N1,01234H

⑼ NUM1 EQU 89

ADD NUM1,10

⑽ NUM2 EQU 100

NUM2 EQU 120

15.假设有下列数据定义语句:

⑴ M1 DB 10

⑵ M2 DW 2345H

⑶ M3 DD 987865H

试写出汇编程序对这些语句汇编后所生成的值(例如M2单元、M2+1单元的内容)。

16.有以下程序片段,试问汇编后符号L1和L2的值各为多少?

BUF1 DB 1,2,3

BUF2 DW 5,6,7

L1 EQU $-BUF2

L2 EQU BUF2-BUF1

17. 若AX=0ABCDH,BX=7F8FH,CF=1。求分别执行8086 CPU 指令

⑴ ADD AX,BX ⑵ ADC AX,BX

⑶ SBB AX,BX ⑷ NEG AX

⑸ AND AX,BX ⑹ OR AX,BX

⑺ XOR AX, BX ⑻ IMUL BL

后,AX寄存器中的内容,

18. 指出下列指令中哪些是错误的,并指出错在何处?

⑴ MOV DL,[DX] ⑵ MOV ES,2000H

⑶ SUB [BX],[SI] ⑷ ADD AX,[BX+CX]

⑸ XCHG DS,[2400H] ⑹ DEC 15H

⑺ IN AL,DX ⑻ OUT 300H,AX

解答

⑴错,DX不能作为间接寻址的寄存器。

⑵错,立即数不能直接送给段寄存器。

⑶错,两个存储单元间内容不能直接相减。

⑷错,CX寄存器不能作为变址寄存器。

⑸错,不允许段寄存器与存储单元内容进行交换

⑹错,减1指令不能对段寄存器直接操作

⑺对

⑻错,输出指令的地址若是16位,必须用DX间址。

19. 下列程序段执行后 AX=?

设数据段有: TABLE DW 100,200,300,400

ENTRY DW 3

代码段对DS初始化

MOV BX,OFFSET TABLE

MOV SI,ENTRY

MOV AX,[BX+SI]

20. 若SS=1000H,SP=2000H,AX=1234H,BX=5678H,FR=2115,试说明执行指令

PUSH AX

PUSH BX

PUSHF

POP CX

POP DX

之后,SP=? SS=? CX=? DX=? 并画图指出堆栈中各单元的内容。解答: SS=1000H

SP=1FFEH

CX=2115H

DX=5678H

栈中各单元内容如下所示:

21、读下列程序段:写出; (1)每条指令连续执行后,哪些寄存器发生变化?内容是什么? (2)程序段执行完后,BX寄存器的肉容是什么?

①MOV BX,3F93H

②MOV CL ,4

③ADD BX ,CL

④MOV AL ,BL

⑤AND AL ,0FH

⑥0R AL ,30H

程序编写及程序填空:(实验)

1)输出传送到目的缓冲区dbuffer中的字符串。

修改提示:

① DS应指向附加段

② dbuffer中的字符串应加字符串结束符'$'

③执行DOS功能调用的9号子功能输出dbuffer中的字符串(2)写程序,输出演示系统的欢迎词,输出格式的最低要求如下: *********************************************** * * * 英文(中文)欢迎词 * * * *********************************************** 提示:通过编写与调试该程序,掌握两段结构的程序设计、输出数据的格式编排(由ASCII码0AH和0DH控制换行和回车操作)、DOS 功能调用,熟悉宏汇编程序调试的上机过程。

(3)编程计算3550H-2320H,按16进制输出计算所得的差1230H。再输出3550H-2321H的差,检验程序的正确性。

提示:考虑依次将1230H(即0001 0010 0011 0000B)从高位到低位,每4位二进制数一组分离出来,再将4位二进制数转换为ASCII码,利用DOS系统功能调用的2号子功能输出,就得到16进制数据的输出效果。本题要求综合应用移位操作、逻辑操作等指令,并利用条件

转移指令实现简单的循环程序,

6.4 实习题

(1)编程完成在一个源字符串中搜索子字符串的功能(要求使用串比较指令cmpsb进行各次搜索),并输出搜索结果。

提示:例如,源串为:How are you?

子串为:are

搜索方法如下:

①源串中含有子串are时,搜索过程如图3.1所示。

图3.1 源串中含有子串时的搜索过程

②源串中不含子串arr时,搜索过程如图3.2所示。

图3.2 源串中不含子串时的搜索过程

每一次搜索用repz cmpsb 指令完成。第一次搜索时,寄存器SI 指向源串,寄存器DI 指向子串,每搜索一次,SI 指向源串的下一个字符,DI 总是指向子串起点,然后进行两串比较,串比较的长度为子串长度。在整个搜索操作中,最多搜索的次数为:源串长度-子串长度+1。程序基本流程如图3.3所示。

(2)编程实现从键盘输入学生分数等级:A、B、C、D、E,统计每种分数等级的人数并求平均成绩(要求用跳转表实现程序分支)

,输出统计结果,要求输出信息意义清楚。

图3.3 串搜索流程图

提示:实现所要求功能的程序流程如图3.4所示,当键入ESC键时结束成绩输入,ESC键的ASCII码为27(十六进制1BH)。

图3.4 统计成绩程序流程图

(3)编程实现一维数组的排序操作。

要求:主程序准备待排序的数据,调用子程序进行排序。子程序接收3个参数:数组名、数组长度、排序标志(=1:从大到小排序;=2:从小到大排序)。子程序根据主程序由寄存器传递的排序标志,对指定数组从大到小或从小到大排序。提示:程序流程如图3.5所示。

图3.5 排序程序流程图

(4)编写一个程序,完成自然数1到100的求和运算。

计算机组成原理实验1-汇编语言实验

微处理器与接口技术 实验指导

实验一监控程序与汇编语言程序设计实验 一、实验要求 1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。 2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。 3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。 4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。 二、实验目的 【1】学习和了解TEC-XP16教学实验系统监控命令的用法; 【2】学习和了解TEC-XP16教学实验系统的指令系统;

【3】学习简单的TEC-XP16教学实验系统汇编程序设计。 三、实验注意事项 (一)实验箱检查 【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。 【2】五位控制开关的功能示意图如下: 【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】 (二)软件操作注意事项 【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口; 【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试; 【3】有时若TEC-XP16实验系统不通讯,也可以重新启动软件或是重新启动PC再试; 【4】在打开该应用软件时,其它的同样会用到该串口的应用软件要先关掉。

汇编语言编写贪吃蛇游戏

DA TA SEGMENT dw 0,0 snk db 1 blk db 32 food db 3 tal1 db 4 tal2 db 2 adrs db 5 len db ? pst db ? addrs dw ? frow db ? fcol db ? hwrt db ? gmov db 'game over press r to restart press q to quit $' score1 db 'score :$' score2 db ? score0 db 1 zero db 48 writer db 'Developer: Geniusdot $' email db 'e-mail: pang@https://www.wendangku.net/doc/547474681.html,$' msg1 db 'The way to play the game:$' way db ' press w to up ,press s to down,press a to left,press d to right$' msg db 'Press any key(except a,s,d,w) to start$' DA TA ENDS STACK SEGMENT stack db 200 dup(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK start: mov ax,data mov ds,ax mov ax,0 mov es,ax mov frow,10 mov fcol,6 mov dh,10 mov dl,26 mov ah,2

int 10h mov ah,9 lea dx,msg1 int 21h mov dh,11 mov dl,7 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,way int 21h mov dh,12 mov dl,20 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,msg int 21h mov ah,0 int 16h mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,10 int 10h mov dh,0 mov dl,0 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,score1 int 21h mov dl,15 mov ah,2 mov bh,0 int 10h

汇编语言基础练习题目

、填空 1. 在8086/8088的计算机中,存储单元的20位物理地址由两部分组成,即16 位的 段地址 和16位的 偏移地址,物理地址=段地址X 10H+偏移量。 2. 段的起始地址必须是某小段的首地址,它能被 10H 整除。 3. 已知01020H 字单元的内容为6A58H 请分别写出它的两个字节单元的地址和 内容: (01020H =58H, ( 01021H =6AH 4. 指令执行后,若标志寄存器的ZF=0,则表示结果不为0;若SF=0,则表示结 果的符号是正号,即结果为正数。 5. 控制器从存储器取出一条指令后,指令指针寄存器IP 的内容是 将要执行的下 一条指令开始的偏移地址。 6. 段地址和偏移地址为1000: 127B 的存储单元的物理地址是1127BH 解:由物理地址=段地址X 10H+偏移量的公式可得 物理地址=1000HX 10H+127BH=10000H+127BH=1127BH 、选择 1. 与CS 寄存器组合才能形成代码段的物理地址的寄存器是 解:16K 个字单元,即为32K 个字节单元。由于2的15次方为32K,因此至 少需要15位二进制数才能表示16K 个字单元。 3. 已知一数据段的段地址是0100H,这个段的第6个字单元的物理地址是(B ) o 解:由于一个字单元占用两个字节,第一个字单元的偏移地址为 0000H,因 此第一个字单元的物理地址为 01000H 。以后每一个字单元的地址在前一个的基 C )。 A. SP 寄存器 B. BP 寄存器 C. IP 寄存器 D. BX 寄存器 2.如果存储器分段时, 的二进制数至少是( 一个段最多允许16K 个字单元,那么表示该段内偏移地址 A )o A.15 位 位 B.16 位 C.17 位 D.18 A. 01010H B. 0100AH C.01012H D.01006H

汇编语言试题及参考答案

汇编语言试题及参考答案 一,填空题 1.ZF标志位是标志结果是否为零的,若结果,ZF为( 1 ),否则ZF为( 0 ).当ZF为1时,SF为( 0 ) 2.标号可以有两种类型属性.它们是( )和( ) 3.8位无符号整数的表示范围为0--255,写成16进制形式为( ),8位有符号整数的表示范围为-128--+127,写成16进制形式为( ) 4.伪指令DB,GROUP 和NAME 三个标号名字域必须有名字的是( ),不得有名字的是( ),可有可无名字的是( ). 5.循环程序通常由( )( )( )和循环结果外理四部分构成 6.在数值不达式中,各种运算符可可混合使用,其优先次序规则*,/( )于+,-;XOR,OR( )于AND,LT( )于GT 7. 宏指令定义必须由伪指令( )开始,伪指令( )结束,两者之间的语句称为( ) 8.调用程序与子程序之间的参数传递方法有四种,即堆栈法( )( )( ) 9.分别用一条语句实现下述指明的功能 (1)栈顶内容弹出送字变量AYW( ) (2)双字变量AYD存放的地址指针送ES和SI( ) (3)变量AY2类型属性送AH( ) (4)不允许中断即关中断( ) (5)将字符串'HOW ARE YOU!'存入变量AYB( ) (6)子程序返回调用程序( ) (7)地址表达式AYY[4]的偏移地址送字变量ADDR( ) (8)AX的内容加1,要求不影响CF( ) (9)BX的内容加1,要求影响所有标志位( ) (10)若操作结果为零转向短号GOON( ) 二,单选题 1.IBM PC微机中,有符号数是用( )表示的 1.原码 2.补码 3.反码 4.BCD码 2.把汇编源程序变成代码程序的过程是( ) 1.编译 2.汇编 3.编辑 4.链接

汇编语言实验2

计算机工程系实验报告 课程名称:汇编语言 实验项目名称:用机器指令和汇编语言指令编程 班级:15级计科4班姓名:梁红梅学号:15091413 一、实验目的: 1.学习Debug中D命令的使用方法,掌握查看指定内存单元的内容的指令,其中本实验中 主要掌握“d段地址:偏移地址”的格式; 2.了解Debug 中D命令程序的执行者:CPU,了解D命令的执行过程; 3.掌握CPU在访问内存单元时的主要过程; 4.学习怎样利用在Debug中cs、ds、ss、es这4个段寄存器,简化debug命令格式。 二、实验要求: 使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax= Add ax,[2] ;ax= Mov bx,[4] ;bx= Add bx,[6] ;bx= Push ax ;sp= 修改的内存单元的地址是内容为 Push bx ;sp= 修改的内存单元的地址是内容为 Pop ax ;sp= ;ax= Pop bx ;sp= ;ax= Push [4] ;sp= 修改的内存单元的地址是内容为 Push [6] ;sp= 修改的内存单元的地址是内容为

三、实验数据记录: 1.进入Debug后使用-a命令将程序写入内存 2.通过使用-t命令将写入内存的程序逐一执行,直到命令执行完毕

三、实验结果及分析: 1.mov ax,[0] 执行完成后 ax=C0EA; 2.add ax,[2]执行完成后ax=C0FC; 3.mov bx,[4] 执行完成后 bx=30F0; 4.add bx,[6]执行完成后 bx=6021; 5.push ax 执行完成后 sp= 00FE 修改的内存单元的地址是 2200:00FE 内容为C0FC 6.push bx 执行完成后 sp= 00FC 修改的内存单元的地址是 2200:00FC 内容为6021

汇编语言-王爽-完美高清版视频教程

汇编语言》-王爽-完美高清版-零基础汇编语言入门书籍PDF格式 同时按ctrl+要下载的地址既可下载对应的视频 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f61cb107c8 001第一章- 基础知识01 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6806f45b8 002第一章- 基础知识02 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6ec42d4d3 003第一章- 基础知识03 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6deb05ec4 004第一章-基础知识04 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6e51f6838 005第一章- 基础知识05 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f66edaf8d3 006第二章- 寄存器(CPU工作原理)01 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6d07e07b9 007第二章- 寄存器(CPU工作原理)02 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6d7f585a8 008第二章- 寄存器(CPU工作原理)03 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f639d8b3cf 009第二章- 寄存器(CPU工作原理)04 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6dcadbde6 010第二章- 寄存器(CPU工作原理)05 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6ea3f01c1 011第二章- 寄存器(CPU工作原理)06 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f65b96a06f 012第二章- 寄存器(CPU工作原理)07 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f682da085a 013第三章- 寄存器(内存访问)01 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6486e698 014第三章- 寄存器(内存访问)02 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6b7491d9f 015第三章- 寄存器(内存访问)03 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f622b7f9a7 016第三章- 寄存器(内存访问)04 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f64e2424b9 017第三章- 寄存器(内存访问)05 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6e5132d4d 018第三章- 寄存器(内存访问)06 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f655c10e86 019第三章- 寄存器(内存访问)07 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6b22e64e6 020第四章- 第一个程序01 下载地址:https://www.wendangku.net/doc/547474681.html,/file/f6812126a4

汇编语言练习题

一、单项选择题(共20题) 1.对于有符号的数来说,下列哪个值最大() A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是()A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.设A=0.4H,B=0.8H,C=0.4,D=0.4Q,它们之间的关系是( )。 A.C+D=B B.A+D=B C.B=D D.A>C>D 4.下列四个寄存器中,可作为十六位寄存器的是( ) A.DL B.CL C.BP D.EBX 5.8088/8086存储器分段,每个段不超过() A.64K个字 B. 32K个字节 C.1兆个字节 D.64K个字节6.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式() A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 7.连接程序把汇编语言源程序生成的目标文件(.OBJ文件)转换成( )。 A..OBJ文件B..EXE文件

C..LST文件D..CRF文件 8.在程序运行过程中,确定下一条指令的物理地址的计算表达式是( )。 A. (CS)×16+(IP) B. (DS)×16+(DI) C. (SS)×16+(SP) D.(ES)×16+(SI) 9.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 10.8086/8088系统执行传送指令MOV时() A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 11.执行下列程序后,(AL)=( )H。 DATA SEGMENT TAB DB ‘0123456789’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX, DATA MOV DS, AX MOV BX, OFFSET TAB MOV AL, 04 XLAT TAB …

汇编语言实验一

淮阴工学院 汇编语言程序设计实验报告 选题名称:实验一调试工具的使用方法训练 系(院):计算机工程学院 专业:计算机科学与技术 班级: 1101 姓名:康志杰学号: 1101301132 指导教师:王福德 学年学期:2013 学年第 2 学期 2013 年 4 月15 日

实验一利用DEBUG调试程序调试程序段 <1 > 实验目的: (1)熟悉DEBUG有关命令的使用方法 (2)利用DEBUG掌握有关指令的功能 (3)利用DEBUG运行简单的程序段 <2 > 实验内容 (1)进入和退出DEBUG程序 1)开始——运行,输入cmd,点确定或回车键进入DOS环境 2)在命令窗口输入debug进入debug程序 3)进入debug程序后,按q退出

(2) 学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命 令、N命令、W命令等,也应试一下。 1 显示存储器单元命令D 格式:D [<地址范围>] 功能:显示指定地址范围内的存储区数据,包括十六进制数据形式及其对应的ASCII码字符显示。 2 写存储器单元命令E 格式:E <地址> [<字符串>] 功能:逐个修改指定单元内容或将字节串写入指定的一组连续单元。 例:将字节串′computer′写入以100H为起始地址的存储器区。 -E 100′computer′ 3显示和修改某个指定寄存器内容, 格式为:-R 寄存器名 例如打入:-R AX 系统将响应如下: AX 0000

: 表示AX当前内容为0000,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如: -R BX BX 0000 :1000 则BX内容由0000改为1000 4显示和修改标志位状态, 命令格式为:-RF 系统将给出响应,如 NV UP EI PL NZ NA PO NC- 这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如 NV UP EI PL NZ NA PO NC-ZR CY

汇编语言入门教程

汇编语言入门教程 2007-04-29 22:04对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK 出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O 控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS 段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。还有一个标志寄存器FR(Flag Register),有九个有意义的标志,将在下文用到时详细说明。

汇编语言习题

汇编语言习题 一、单项选择题 1. 汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( )。 A、名字项 B、操作项 C、操作数项 D、注释项 2. 在汇编语言程序中,对END语句的叙述正确的是()。 A、是一可执行语句 B、表示程序执行到此结束 C、表示源程序到此结束 D、在汇编后要产生机器码 3. 汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列出的有效名字是() A、Variable B、First & ld C、0FFFFH D、'Memphis' 4.用一条指令仅实现将BX+SI=>AX的方法是() A、XCHG AX,[BX][SI] B、MOV AX,[BX+SI] C、LEA AX,BX[SI] D、LEA AX,[BX][SI] 5.设 SP初值为2000H,执行指令"PUSH AX"后,SP的值是() A、1FFFH B、1998H C、2002H D、1FFEH 6.条件转移指令JC产生程序转移的条件是() A、CF=1 B、CF=0 C、CF=1和ZF=1 D、CF=1和ZF=0 7.选用串操作指令时,错误的操作是() A、置方向标志位 B、根据串操作指令设置重复次数并送入CX C、设置源操作数及目的操作数指针 D、源操作数和目的操作数都可以加段超越 8.设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。执行SBB AL,[SI]后,正确的结果是() A、AL=5FH SF=1 CF=1 B、AL=60H SF=1 CF=0 C、AL=5FH SF=0 CF=1 D、AL=60H SF=0 CF=0 9.设AX=1000H,执行NOT AX指令后,正确的结果是() A、AX=1001H B、AX=0EFFH C、AX=1000H D、AX=0111H 10. 设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是( ) A、85B92H B、86192H C、BB690H D、12169H 11. 可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是() A、AX,BX,CX,DX B、DS,ES,CS,SS C、SP,BP,IP,BX D、SI,DI,BP,BX 12. 循环指令LOOPNZ终止循环的条件是( )。 A、CX=0,且ZF=0 B、CX=0,或ZF=1 C、CX10,且ZF=0 D、CX10,或ZF=1 13. 设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL AAA 之后,其结果应是()。 A、 AH=01,AL=05 B、 AH=1 AL=15 C、 AH=0 AL=0FH D、 AH=0 AL=05 14. 下面的数据传送指令中,错误的操作是()。 A、 MOV SS:[BX+DI],1000H B、 MOV DX,1000H C、 MOV WORD PTR[BX],1000H D、 MOV DS,2000H 15.DA1 EQU BYTE PTR DA2 DA2 DW 0ABCDH ┇ SHL DA1,1 SHR DA2,1

汇编语言实现文本编辑器

汇编语言课程设计 题目文本方式下字处理程序的设计与实现 学院计算机科学与技术学院 专业计算机科学与技术 班级计算机科学与技术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、在下列的选项中,能够组成计算机系统的是()。 A.硬件系统和软件系统 B.CPU、存储器、输入/输出设备 C.操作系统、各种语言 D.系统软件和应用软件2、汇编语言属于()。 A.用户软件 B.系统软件 C.高级语言 D.机器语言3、汇编语言源程序经汇编程序汇编后产生的文件的扩展名是()。 A.EXE B.OBJ C.ASM D.LST 4、汇编语言的什么文件经链接(LINK)后产生可执行文件? A.ASM B.EXE C.LST D.OBJ 5、中央处理器CPU是由()组成的。 A.运算器 B.控制器 C.寄存器组 D.前三者6、IBM PC机的DOS是属于()。 A.用户软件B.系统软件C.系统硬件 D.一种语言7、汇编语言源程序是()程序。 A.不可直接执行的B.可直接执行的 C.经汇编程序汇编后就可执行的D.经连接后就可直接执行的8、8086/8088 CPU的寄存器组中,8位的寄存器共有()个。 A.4B.6C.8D.109、8086/8088 CPU的寄存器组中,16位的寄存器共有()个。 A.10B.12C.13D.1410、8086/8088 CPU执行算术运算时PSW共有()个标志位会受影响。 A.4B.5C.6D.711、在程序执行过程中,IP寄存器始终保存的是()。 A.上一条指令的首地址B.本条指令的首地址。 C.下一条指令的首地址D.需计算有效地址后才能确定地址。 12、IBM PC机的存储器可分()个段。 A.4B.256C.512D.65536 13、当使用BP作编程地址时,此时使用的是()段。 A.CSB.DSC.ESD.SS

汇编语言实验

实验四屏幕字符显示程序 实验目的: 通过实验掌握下列知识: 1、8088指令: JMP,ROR,XOR,HLT。 2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。 3、直接向视频RAM(VRAM)送ASCII码进行屏幕显示的方法。 4、IBM-PC机的ASCII码表及控制字符。 5、命令(。COM)文件及使用方法。 6、利用^Break退出程序的方法及局限性。 实验内容及步骤: 一、利用INT 21 0AH号功能调用显示字符串。 1、用A命令在100H处键入下列程序: MOV AH, 9 MOV DX,110 INT 21 INT 20 2、用A命令在110H处键入下列字符串的ASCII码: DB 'This is a sample!$' 3、用N命令和W命令将此程序(包括数据区)存入文件名为AA。COM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。 4、用Q命令退出DEBUG。 5、在DOS命令下打AA,运行此程序,即在屏幕上显示'This is a sample!'字符串,若不出现,用DEBUG检查程序有无错误。

二、利用INT 21H 2号功能显示字符: 1、用A命令在100H处键入下列程序: XOR DL,DL MOVCX,100 LOP:MOV AH,2 INT 21 INC DL PUSH CX MOV CX,8 DELY: PUSH CX MOV CX,0 J: LOOP J POP CX LOOP DELY POP CX LOOP LOP INT 20 2、用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同? 3、按CTRL+BREAK退出此程序,若一次不行可多做几次。

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

汇编语言版学生管理 系统

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

目录 题目一:学生成绩管理系统 (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

汇编语言实现冒泡排序(一)

;用汇编语言实现实现冒泡排序,并将排序后的数输出 DATAS SEGMENT A dw 100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45 N=$-A ;计算数字所占的字节数 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AX MOV SI,0 ;SI遍历数字;前一个数的地址 MOV CX,N/2-1 ;设置循环次数,M(M=N/2)个数需要,循环M-1次 CALL BUBBLE ;调用BUBBLE将原来的数排序 ;输出排序后的数 MOV CX,N/2 ;循环M次输出排序后的M个数 MOV SI,0 ;SI遍历排序后的数 MOV DI,0 ;用DI记录数字的位数 MOV BP,N+5 ;BP用于遍历存储的转化后的字符的位置 SHOW: PUSH CX ;循环次数入栈 MOV DX,0 ;由于将要进行16位除需要置高16位为0 MOV AX,[SI] ;低16位为排序后的数 CALL DTOC ;调用DTOC将十进制数转换为字符串 CALL SHOW_STR ;调用SHOW_STR将一个数转化得到的字符串输出ADD SI,2 ;下一个数 POP CX ;循环次数出栈栈 LOOP SHOW MOV AH,4CH INT 21H ;冒泡排序 BUBBLE PROC L1: PUSH CX ;将循环次数入栈 LEA SI,A ;SI遍历DATAS数据段的数字 L2: MOV AX,A[SI] ;将前一个数存于AX CMP AX,A[SI+2] ;比较前后两个数 JBE NEXT ;如果前一个数小于或等于后一个数则继续本轮的比较XCHG AX,A[SI+2] ;否则,交换前后两个数的位置 MOV A[SI],AX NEXT:ADD SI,2 ;下一个数 LOOP L2 ;注意内层循环的次数已经确定了 POP CX ;将循环次数出栈 LOOP L1 ;下一轮比较 RET BUBBLE ENDP

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

实验一基础汇编语言程序设计

实验一基础汇编语言程序设计 实验目的 1.学习和了解TEC-XP十六位机监控命令的用法; 2.学习和了解TEC-XP十六位机的指令系统; 3.学习简单的TEC-XP十六位机汇编程序设计。 实验内容 1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容; 2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。 3.学习联机使用TEC-XP教学试验系统和仿真终端软件。 实验要求 在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。 实验步骤 1.关闭电源,将大板上的COMl口与PC机的串口相连; 2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可; 3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。其它实验相同; 4.按一下“RESET”按键,再按一下“START”’按键,主机上显示: 5.用R命令查看寄存器内容或修改寄存器的内容 1.用R命令查看寄存器或修改寄存器内容 1)在命令行提示符状态下输入: R↙;显示寄存器的内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入: R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格, 也可有—个或数个空格 主机显示: 寄存器原值:xxxx 在后面输入新的值0036 再用R命令显示寄存器内容,则R0的内容变为0036。 2.用D命令显示存储器内容 在命令行提示符状态下输入: D 2000↙ 会显示从2000H地址开始的连续128个字的内容; 连续使用不带参数的D命令,起始地址会自动加128(即80H)。

如何编写和汇编语言程序

如何编写和汇编语言程序 可以用普通文本编辑器编辑汇编语言源程序。常用的有 MS-DOS 下的 EDIT 文本编辑程序, Windows 下的写字板( WORDPAD.EXE )等。用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为· ASM 。 软件运行基本环境 运行汇编程序必备的软件环境: DOS 操作系统;汇编系统。 汇编系统盘应包含如下文件: MASM 宏汇编程序文件 LISK 连接程序文件 CRFF 索引程序文件(也可不用) 汇编源程序编写 1 )源程序的书写格式 当 CPU 访问内存时,是把存储器分成若干个段,通过 4 个段寄存器中存放的地址对内存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤ 64KB ,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式: 逻辑堆栈段堆栈段名 SEGMENT STACK 用变量定义预置的堆栈空间 · · 堆栈段名 ENDS 逻辑数据段数据段名 SEGMENT 用变量定义预置的数据空间 · · 数据段名 ENDS 逻辑代码段代码段名 SEGMENT ASSUME 定义各段寻址关系 过程名 PROC … 程序 · · 过程名 ENDP 代码段名 ENDS END 过程名或起始标号 在源程序中最少要有一个代码段,数据段根据需要可有可无,也可以增设附加段。对于堆栈段也可以根据需要可有可无,但在连接( LINK )时计算机将显示警告性的错误: Warning : N STACK segment There was 1 error detected. 在程序中如果没有用到堆栈时,该错误提示不影响程序的运行,如果程序中用到堆栈时必须设置堆栈段。 其中: SEGMENT 、 ASSUME 、 PROC … ENDP 为伪指令,伪指令是发给汇编程序 ASM 的,而不和微处理器打交道,在汇编时不产生目标代码,只是把源程序中各段的设置情况告诉汇编程序。 2 )段寄存器的段地址的装入 Assume 伪指令语句只是建立了当前段与段寄存器的联系,但不能把各段的段地址装入相应的段寄存器中,段寄存器的段地址的装入是在程序中完成的。 ( 1 ) DS 、 ES 、 SS 的装入 由于段寄存器不能用立即数寻址方式直接传送,所以段地址装入可通过通用寄存器传送给段寄存器。 MOV AX ,逻辑段名 MOV 段寄存器, AX

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