大工19春《汇编语言程序设计》大作业题目及要求答案
汇编语言程序设计练习题及参考答案

一、单项选择题从每小题的四个备选答案中,选出一个正确答案,并将正确答案的番号填人括号内。
1.用来存放下一条将要执行的指令地址的寄存器是 (B )A.SP B.IP C.BP D.CS2.要使串处理从低地址向高地址进行,应把标志位置为 (D )A.IF=1 B.TF=0C.DF=1 D.DF=03.使状态标志位CF清零的错误指令是 (C )A.OR AX,AX B.SUB AX,AXC.MOV CF,0 D.CLC4.设SP=1110H,执行PUSH AX指令后,SP的内容为 (B )A.SP=1112H B.SP=110EHC.SP=1111H D.SP=110FH5.汇编源程序出现语法错误的指令有 (D )A.MOV [BX+SI],AL B. MOV AX,[BP+DI]C.MOV DS,AX D. MOV CS,AX6.下列串操作指令中,必须同时指明源串和目的串地址的指令是 (D )A.STOSW B.LODSWC.SCASW D.CMPSW7.设BL中有一无符号数,实现把BL中的数乘以2,应选用的指令是 (B )A.SHR BL,1 B.SHL BL,1C.SAR BL,1 D.RCR BL,18.执行PUSH AX指令的正确步骤是 (A )A.1.SP←SP-1,(SP)←AH B.1.(SP)←AH,SP←SP-12.SP←SP-1,(SP)←AL 2.(SP)←AL,SP←SP-1C.1.SP←SP+1,(SP)←AH D.1.(SP)←AH,SP←SP+12.SP←SP+1,(SP)←AL 2.(SP)←AL,SP←SP+19.CF=1 时转移到目标地址的条件转移指令是 (B )A.JNC B.JC C.JZ D.JS10.在执行NEG指令时,对标志位CF有影响,其影响的规则是 ( C )A.对正数求补时,CF=0 B.对负数求补时,CF=0C.对非零数求补时,CF=1 D.对零求补时,CF=111.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是(A )A.目的操作数最高位为0 B.目的操作数最高位为1C.目的操作数为任意情况 D.无论什么情况都不可能相同12.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是 ( D )A.AX=0032H B.AX=00E0HC.AX=03E0H D.AX=0FFE0H13.指令的操作数中,允许出现表达式,例如BUF1与BUF2均为变量名,下面指令中语法正确的是 (D )A.MOV AX,BUFl*BUF2B.MOV AX,BUF1/BUF2C.MOV AX,BUF1+ES:BUF2D .MOV AX ,BUF2-BUF114.下面指令中,操作数的寻址方式为寄存器间接寻址的指令是 (C )A .INC WORD PTR [BX+SI]B .INC CX ,[SI+COUNT]C .NEG BYTE PTR [BX]D .ADD AX ,B15.NUM EQU 80HDA DB 34HAND DA ,NUM上述语句执行后,DA 中的内容是 (D )A .0B4HB .80HC .34HD .016.直接、间接、立即三种寻址方式指令的执行速度,由快至慢的排序为 (A )A .立即、直接、间接B .直接、间接、立即C .直接、立即、间接D .不一定17.语句DA1 DB 2 DUP(3,5,7)汇编后,该语句可等同于的语句是 (D )A .DA1 DB 3,5,7B .DA1 DB 2,3,5,7C .DA1 DB 3,5,7,2D .DA1 DB 3,5,7,3,5,718. MOV AL ,80HMOV CL ,2SAR AL ,CL上述指令序列执行后,结果是 (D )A .AL=40HB .AL=20HC .AL=0C0HD .AL=0E0H19.下面是实现将AL 内容加1的压缩型BCD 码加法程序段,其中正确的指令序列是 (A ) A .INC ALB .ADD AL ,1DAA DASC .ADD AL ,1 D .STCDAA AAA20.现有数据存储如图所示:30100H 30101H 30102H 30103H设AL=01H ,BX=0100H ,DS=3000H 执行换码指令XLAT 后正确的结果是(B )A .AL=20HB .AL=38HC .AL=00HD .AL=41H21.若定义DAT DW 'A',则(DAT)和(DAT+1)两个相邻的内存中存放的数据是 (B )A .0041HB .4100H20H38H41H55HC.xx41H D.41xxH[注]选项C. 和D.中的XX表示任意数据。
汇编语言程序设计题目以及答案

汇编语言程序设计题目以及答案[P1] 汇编语言程序设计题目以及答案汇编语言是一种底层计算机语言,它直接使用机器指令来编写程序。
本文将介绍一些汇编语言程序设计的题目,并提供相应的答案。
通过这些题目和答案的学习,读者可以更好地理解和掌握汇编语言程序设计的基本概念和技巧。
[题目一] 计算两个数的和要求:编写汇编程序,计算两个给定的整数的和,并将结果存储在指定的内存位置中。
答案:```assemblysection .datanum1 dd 10 ; 第一个整数num2 dd 20 ; 第二个整数result dd 0 ; 结果section .textglobal _start_start:mov eax, [num1] ; 将num1值存入寄存器eaxadd eax, [num2] ; 将num2值与eax寄存器中的值相加mov [result], eax ; 将结果存储到result变量mov eax, 1 ; 准备执行系统调用mov ebx, 1 ; 文件描述符:标准输出mov ecx, result ; 输出的数据mov edx, 4 ; 数据长度int 0x80 ; 执行系统调用mov eax, 1 ; 准备执行系统调用xor ebx, ebx ; 正常退出int 0x80 ; 执行系统调用```[题目二] 字符串反转要求:编写汇编程序,将一个给定的字符串反转,并将结果存储在指定的内存位置中。
答案:```assemblysection .datastr db 'Hello', 0 ; 待反转的字符串section .bssreverse resb 6 ; 存储反转后的字符串section .textglobal _start_start:mov esi, str ; esi指向待反转的字符串mov edi, reverse ; edi指向存储反转结果的位置 mov ecx, 5 ; 字符串长度为5mov ebx, 1 ; ebx用于计数reverse_loop:mov al, [esi+ebx]mov [edi-ebx+5], alinc ebxloop reverse_loopmov byte [edi+5], 0 ; 在末尾添加字符串结束符 mov eax, 4 ; 准备执行系统调用mov ebx, 1 ; 文件描述符:标准输出mov ecx, reverse ; 输出的数据mov edx, 6 ; 数据长度int 0x80 ; 执行系统调用mov eax, 1 ; 准备执行系统调用xor ebx, ebx ; 正常退出int 0x80 ; 执行系统调用```[题目三] 求平均数要求:编写汇编程序,计算给定的一组整数的平均数,并将结果存储在指定的内存位置中。
汇编语言程序设计教案及习题答案

汇编语言程序设计教案及习题答案教案章节:一、汇编语言简介1. 汇编语言的概念2. 汇编语言的特点3. 汇编语言的应用领域二、汇编语言的基本语法1. 数据类型及表示2. 指令格式及分类3. 寄存器使用规则三、汇编语言程序设计步骤1. 分析需求,确定程序功能2. 选择合适的汇编语言及开发环境3. 编写汇编代码,调试程序4. 优化程序性能四、常用汇编指令及功能1. 数据传输指令2. 算术运算指令3. 逻辑运算指令4. 控制流指令5. 字符串操作指令6. 中断指令五、汇编语言与C语言的接口编程1. extern声明汇编函数2. 调用汇编函数的方法3. 汇编函数与C函数的数据交换4. 实例分析:汇编语言实现字符串排序习题答案:一、汇编语言简介1. 汇编语言是一种低级编程语言,用于编写计算机程序。
(正确)2. 汇编语言可以直接操作计算机硬件资源。
(正确)3. 汇编语言程序可读性差,不易维护。
(正确)二、汇编语言的基本语法1. 数据类型及表示a. 字节:8位(正确)b. 字:16位(正确)c. 双字:32位(正确)d. 四字:64位(正确)2. 指令格式及分类a. 操作码(正确)b. 操作数(正确)c. 寄存器(正确)d. 标志位(正确)3. 寄存器使用规则a. 通用寄存器:AX, BX, CX, DX(正确)b. 段寄存器:CS, DS, ES, SS(正确)c. 指令指针:IP(正确)d. 状态寄存器:FLAGS(正确)三、汇编语言程序设计步骤1. 分析需求,确定程序功能(正确)2. 选择合适的汇编语言及开发环境(正确)3. 编写汇编代码,调试程序(正确)4. 优化程序性能(正确)四、常用汇编指令及功能1. 数据传输指令a. MOV:数据传送(正确)b. PUSH:压栈(正确)c. POP:出栈(正确)d. XCHG:交换数据(正确)2. 算术运算指令a. ADD:加法(正确)b. SUB:减法(正确)c. MUL:无符号乘法(正确)d. IMUL:有符号乘法(正确)3. 逻辑运算指令a. AND:逻辑与(正确)b. OR:逻辑或(正确)c. XOR:逻辑异或(正确)d. NOT:逻辑非(正确)4. 控制流指令a. JMP:无条件跳转(正确)b. JE:相等跳转(正确)c. JNE:不相等跳转(正确)5. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)6. 中断指令a. INT:软件中断(正确)b. INTO:中断向量表(正确)五、汇编语言与C语言的接口编程1. extern声明汇编函数(正确)2. 调用汇编函数的方法(正确)3. 汇编函数与C函数的数据交换(正确)4. 实例分析:汇编语言实现字符串排序(正确)汇编语言程序设计教案及习题答案教案章节:六、汇编语言的输入与输出1. 输入输出指令2. 字符串操作指令3. 实例分析:编写一个简单的输入输出程序七、汇编语言的杂项指令1. 杂项指令的概念2. 常用杂项指令及其功能3. 实例分析:杂项指令的应用八、汇编语言的子程序调用1. 子程序调用的概念2. 子程序的定义与调用3. 子程序的返回4. 实例分析:子程序在汇编语言中的应用九、汇编语言的程序举例1. 实例一:计算两个数的和2. 实例二:字符串的复制3. 实例三:数制的转换4. 实例四:文件的读写十、汇编语言程序的调试与优化1. 调试工具的使用2. 调试方法与技巧3. 程序优化的概念4. 程序优化的方法与技巧习题答案:六、汇编语言的输入与输出1. 输入输出指令a. IN:输入指令(正确)b. OUT:输出指令(正确)c. INPUT:输入函数(正确)d. PRINT:输出函数(正确)2. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)3. 实例分析:编写一个简单的输入输出程序(正确)七、汇编语言的杂项指令1. 杂项指令的概念(正确)2. 常用杂项指令及其功能a. NOP:无操作(正确)b. HLT:停止CPU运行(正确)c. CMC:翻转标志位(正确)d. ARPL:寄存器之间交换(正确)3. 实例分析:杂项指令的应用(正确)八、汇编语言的子程序调用1. 子程序调用的概念(正确)2. 子程序的定义与调用a. 定义子程序(正确)b. 调用子程序(正确)3. 子程序的返回(正确)4. 实例分析:子程序在汇编语言中的应用(正确)九、汇编语言的程序举例1. 实例一:计算两个数的和(正确)2. 实例二:字符串的复制(正确)3. 实例三:数制的转换(正确)4. 实例四:文件的读写(正确)十、汇编语言程序的调试与优化1. 调试工具的使用(正确)2. 调试方法与技巧(正确)3. 程序优化的概念(正确)4. 程序优化的方法与技巧(正确)汇编语言程序设计教案及习题答案教案章节:十一、汇编语言与操作系统1. 操作系统的概念2. 汇编语言在操作系统中的应用3. 实例分析:汇编语言编写简单的操作系统十二、汇编语言与设备驱动程序1. 设备驱动程序的概念2. 汇编语言在设备驱动程序开发中的应用3. 实例分析:汇编语言编写简单的设备驱动程序十三、汇编语言与嵌入式系统1. 嵌入式系统的概念2. 汇编语言在嵌入式系统中的应用3. 实例分析:汇编语言编写简单的嵌入式系统十四、汇编语言与汇编器的使用1. 汇编器的概念2. 汇编器的使用方法3. 实例分析:使用汇编器编写和调试汇编程序十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势2. 汇编语言在未来的应用领域3. 汇编语言学习的方法与建议习题答案:十一、汇编语言与操作系统1. 操作系统的概念(正确)2. 汇编语言在操作系统中的应用(正确)3. 实例分析:汇编语言编写简单的操作系统(正确)十二、汇编语言与设备驱动程序1. 设备驱动程序的概念(正确)2. 汇编语言在设备驱动程序开发中的应用(正确)3. 实例分析:汇编语言编写简单的设备驱动程序(正确)十三、汇编语言与嵌入式系统1. 嵌入式系统的概念(正确)2. 汇编语言在嵌入式系统中的应用(正确)3. 实例分析:汇编语言编写简单的嵌入式系统(正确)十四、汇编语言与汇编器的使用1. 汇编器的概念(正确)2. 汇编器的使用方法(正确)3. 实例分析:使用汇编器编写和调试汇编程序(正确)十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势(正确)2. 汇编语言在未来的应用领域(正确)3. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。
汇编语言程序设计试题参考答案

汇编语言程序设计参考答案A卷一、单项选择题(本大题共8小题,每小题2分,共16分)1.C2.B3.B4.A5.C6.A7.A8.C9.D 10.B二、名词解释(本大题共5小题,每小题4分,共20分)11.微处理器:也成中央处理器(CPU),是微型计算机的核心部件,包含运算器、控制器、寄存器组及总线接口等,负责对计算机系统各部件进行统一的协调和控制。
12.寻址方式:就是寻找操作数或操作数地址的方式,根据寻址方式可方便地访问各类操作数。
13.伪指令:是发送给汇编程序的命令,在汇编过程中由汇编程序进行处理,如定义数据、分配存储区、定义段及定义过程等。
14.中断源:指能引起中断的外部设备或内部原因。
15.汇编语言:是一种面向CPU指令系统的程序设计语言,采用指令助记符来表示操作码和操作数,用符号地址表示操作数地址。
三、简答题(本大题共4小题,每小题5分,共20分)16.微型计算机系统软件的主要特点是什么?计算机系统软件的主要特点是简化计算机操作,支持应用软件的运行并提供相关服务,通常包括操作系统、语言处理程序等。
17.什么是逻辑地址?他由哪两部分组成?计算机存储器中给每个逻辑段编址的地址称逻辑地址。
逻辑地址是在程序中使用的地址,他由段地址和偏移地址两部分构成。
18.一个完整的汇编源程序由那些逻辑段组成?各逻辑段的主要作用是什么?一般情况下汇编语言源程序应该由以下3个逻辑段组成:①数据段:用来在内存中建立一个适当容量的工作区,以存放常数,变量等程序需要对其进行操作的数据;②堆栈段:用来在内存中建立一个适当容量的堆栈区,以便在中断、子程序调用时使用;③代码段:包括了许多以符号表示的指令,其内容就是程序需要执行的具体操作。
19. DMA数据传送方式的特点是什么?DMA数据传送方式把外设与内存交换信息的操作与控制交给DMA控制器,简化了CPU对数据交换的控制,数据传送速度快,但这种方式电路结构复杂,硬件开销大。
《汇编语言程序设计》课程知识 复习 学习材料 试题与参考答案

《汇编语言程序设计》课程知识复习学习材料试题与参考答案一、单选题1.为了使MOV AX,VAR指令执行后,AX寄存器中的内容为4142H,下面哪一条数据定义会产生不正确的结果?(C)A.VAR DW 4142HB.VAR DW 16706C.VAR DB 42H,41HD.VAR DW ‘AB’2.关于8086/8088微机系列,下列说法哪个是正确的(D)A.一个存储单元由16个二进制位组成,简称字。
B.当存储一个字数据时,低字节放高地址位,高字节放低地址位。
C.在内存中,可以无限分配段,且段的大小不受限制。
D.段与段之间可以邻接,也可以重叠。
3.宏指令库以(C)格式存放在磁盘上。
A.可执行代码B.目标代码C.源代码4.计算机处理问题中会碰到大量的字符.符号,对此必须采用统一的二进制编码。
目前,微机中普遍采用的是( D)码。
A.BCD码B.二进制码C.十六进制码D.ASCII码5.运算器能够完成(C)运算。
A.算术运算B.逻辑运算C.算术运算和逻辑运算D.加减运算6.十六进制数88H,可表示成下面几种形式,请找出错误的表示(D)A.无符号十进制数136B.带符号十进制数-120C.压缩型BCD十进制数88D.8位二进制数-8的补码表示7.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是(B )A.MOV AX,89B.MOV AX,0809HC.MOV AX,89HD.MOV AX,08098.在执行下列指令时,需要使用段寄存器DS的指令是(D)A.STOSWB.ADD AL,CLC.NEG BXD.INC DA[BX]9.假设AL=28H,执行ROL AL,1指令之后的情况是(D ) P125A.AL=14H, CF=1B.AL=50H, CF=1C.AL=14H, CF=0D.AL=50H, CF=010.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是(D )A.AX=0032HB.AX=00E0HC.AX=03E0HD.AX=0FFE0H11.JMP SI的目标地址偏移量为(A)。
汇编语言程序设计19春在线作业1-0005

汇编语言程序设计19春在线作业1-0005 IF条件汇编的意思是()
A:如求出表达式的值为0,则满足条件
B:求出表达式的值如不为0,则满足条件
C:在汇编程序的第一次扫描期间满足条件
D:在汇编程序的第二遍扫描期间满足条件
答案:B
某存储单元的物理地址是12345H,可以作为它的段地址有()A:2345H
B:12345H
C:12340H
D:1234H
答案:D
INT 1AH指令执行的结果高位字存在()中。
A:AX
B:BX
C:CX
D:DX
答案:D
MOV BL, [BX] 的寻址方式()
A:直接寻址
B:变址寻址
C:立即寻址
D:寄存器寻址
答案:D
MOV AX, 1234H
MOV CL, 4
ROL AX, CL ;执行完这些指令(AX)=()A:1234H
B:1243H
C:2341H
D:4321H
答案:C
BIOS中断类型显示器I/O的功能代号()。
大工19春《汇编语言程序设计》在线作业3【答案】

大工19春《汇编语言程序设计》在线作业3
键盘I/O对应16H号中断。
T.对
F.错
正确答案:A
在汇编语言中,宏是源程序中的一段有独立功能的程序代码,只需要在源程序中定义一次就可以多次调用。
T.对
F.错
正确答案:A
MACRO和ENDM是不合法的关键字搭配。
T.对
F.错
正确答案:B
经宏定义定义后的指令就可以在源程序中调用,这种对宏指令的调用称为宏调用。
T.对
F.错
正确答案:A
LOCAL伪操作只能在宏定义内部使用,而且它必须是MACRO伪操作后的第一个语句。
T.对
F.错
正确答案:A
REPT和ENDM是一对不合法的伪操作。
T.对
F.错
正确答案:B。
西安交通大学19年3月课程考试《汇编语言程序设计》作业考核试题答案辅导资料

西安交通大学19年3月课程考试《汇编语言程序设计》作业考核试题
1、C
2、D
3、D
4、A
5、B
一、单选题共30题,60分
1、当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是()
AJLE
BJNL
CJNLE
DJL
【答案】正确是:C
2、执行下面指令序列后,结果是()。
MOV AL,07FH CBW
AAX=0F7FH
BAX=87FH
CAX=0FF7FH
DAX=007FH
【答案】正确是:D
3、下面指令中影响状态位CF的指令是( )
AINC AX
BDEC AX
CNOT AX
DNEG AX
【答案】正确是:D
4、下列指令中,不影响标志位的指令是( )
ASUB BX,BX
BROR AL,1
CJNC Label
DINT n
【答案】正确是:A
5、段内直接转移指令采用的寻址方式是:()
A直接寻址
B相对寻址
C绝对寻址
D间接寻址
【答案】正确是:B
6、8086汇编语言中,BCD码的运算是借用二进制数的运算指令并加以调整来实现的。
其中非压缩型BCD码减法的调整指令为___
AAAA
BDAA
CAAS
DDAS
【答案】正确是:C
7、MOV AX,COUNT[SI]的源操作数在___
ACS段
BDS段
CSS段。
大工19春《汇编语言程序设计》在线作业123参考答案

大工19春《汇编语言程序设计》在线作业1
对计算机的软件、硬件进行管理的是()的功能。
A.操作系统
B.数据库管理系统
C.编译器
D.用户程序
正确答案:A
以下有关运算器运算功能的描述,()是正确的。
A.只做加法
B.只做算术运算
C.既做算术运算又做逻辑运算
D.只做逻辑运算
正确答案:C
一个完整的计算机系统应包括()。
A.运算器、存储器、控制器
B.外部设备和主机
C.主机和应用程序
D.配套的硬件和软件系统
正确答案:D
运算器虽有许多部件组成,但核心部分是()。
A.数据总线
B.算术逻辑运算单元
C.cache
D.CPU和寄存器
正确答案:B
在计算机系统中,存储器是记忆设备,它主要用来()。
A.存放数据
B.存放程序
C.存放数据和程序
D.存放微程序
正确答案:C。
大工19春《汇编语言程序设计》大作业题目及要求答案

学习中心:专业:计算机应用技术年级:年春/秋季学号:学生:题目1.谈谈你对本课程学习过程中的心得体会与建议?时间过得真快,一学期的学习马上就要结束了,经过一个学期的学习,我也慢慢摸出了汇编学习的规律,特别感谢指导老师的耐心教导。
首先,学习这门语言时如果能联系上以前学过的其他高级语言的知识,则会起到良好的效果。
例如C语言程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF...THEN...ELSE...),循环结构(FOR...NEXT)三种结构,也通过C 语言了解并掌握了什么是子程序,什么是调用。
事实上,汇编语言中有关程序结构,子程序等等的知识都是跟C语言十分相似的,只是在编程时用到的语言不同:汇编语言完全面向机器,需要指明数据在寄存器、内存中的流向。
第二,学习汇编语言,首要问题是学习80X86指令系统。
如果能将指令系统中的各个助记符、格式等都能完全掌握并灵活运用,大部分工作就已经完成了。
指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。
如果不熟悉汇编指令的功能及其有关规定,那肯定不能灵活使用汇编语言。
还有一点十分重要。
和所有的程序设计语言一样,要学好汇编语言,实验是必不可少的环节。
我们深有体会:书上的程序都能看懂,基本原理也都明白,但是在自己亲手编写程序时,却无从下手,甚至连第一句该怎么写都不知道。
通过实验,可以在很大程度上加深印象。
在书上看程序,一切都是理所当然,十分顺利,而自己动手,才会真正发现自己的不足之处。
程序的编写在记事本中进行即可,掌握debug的使用对实验是有很大帮助的。
现在汇编语言的学课程已经告一段落了,学习过程中遇到的所有困难以及遗留的难点都需要我们在其余时间里逐步攻克,在打好基础的前提下,学习更加专业的汇编知识。
以上便是我在学习汇编语言过程中所有的心得体会,我们会在不断的学习与实践中向着更深入的层面迈进。
2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。
汇编语言程序设计期末大作业

汇编语言程序设计期末大作业作为汇编语言程序设计的期末大作业,我选择了一个简单的任务,即编写一个能够对一组学生成绩进行排序的程序。
为了完成这个任务,我首先定义了一个存储学生数据的数组,每个学生的数据包括学生姓名和学生成绩。
然后,我使用冒泡排序算法对学生成绩进行排序。
冒泡排序算法的基本思想是从数组的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序错误,则交换它们的位置。
这样一轮比较下来,最大的元素就会被移到数组的最后一个位置。
然后,我们对剩下的元素再次进行相同的比较和交换,直到整个数组都被排序。
在我的程序中,我使用了8086汇编语言编写了一个排序子程序。
这个子程序接受一个指向学生数据数组的指针和数组的长度作为输入,并使用冒泡排序算法对数组进行排序。
在排序过程中,我使用了一个内循环和一个外循环来实现比较和交换的操作。
内循环用于比较和交换数组中相邻的两个元素,而外循环用于控制内循环的次数,以保证整个数组都被排序。
在主程序中,我首先定义了一个存储学生数据的数组,并初始化了数组中的元素。
然后,我调用排序子程序,并传递数组的指针和长度作为参数。
排序子程序完成后,我打印排序后的学生数据,以展示程序的结果。
通过编写这个程序,我不仅复习了汇编语言的基本知识和技巧,还学会了使用冒泡排序算法对数据进行排序。
我发现在汇编语言中实现算法可能会比高级语言更复杂和繁琐,但它也提供了更大的灵活性和控制力。
此外,我通过这个项目还加深了对指针和数组的理解和应用,并提高了编写结构化程序的能力。
总的来说,这个汇编语言程序设计的期末大作业让我在实践中巩固了所学的知识,培养了解决问题和编写程序的能力。
通过不断地尝试和调试,我成功地实现了一个能够对一组学生成绩进行排序的程序。
这个过程对我个人的成长和学习是非常有意义的。
汇编语言程序设计习题及答案

汇编语言程序设计习题及答案汇编语言程序设计习题及答案汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。
虽然在现代计算机编程中,高级语言如C、Java等更为常见,但了解汇编语言的基本原理和编程技巧对于理解计算机底层工作原理和进行性能优化非常重要。
本文将介绍一些汇编语言程序设计的习题及其答案,帮助读者巩固和提升汇编语言编程能力。
一、基础习题1. 编写一个汇编程序,将存储器中的某个字节的值加1,并将结果存回原位置。
答案:```assemblyMOV AL, [地址]INC ALMOV [地址], AL```2. 编写一个汇编程序,计算存储器中一个数组的和,并将结果存放在指定的寄存器中。
答案:```assemblyMOV CX, 数组长度MOV BX, 数组首地址MOV AX, 0LOOP_START:ADD AX, [BX]ADD BX, 2LOOP LOOP_START```二、进阶习题1. 编写一个汇编程序,实现字符串的逆序输出。
答案:```assemblyMOV SI, 字符串首地址MOV DI, 字符串尾地址MOV CX, 字符串长度DEC CXREVERSE:MOV AL, [SI]MOV AH, [DI]MOV [DI], ALMOV [SI], AHINC SIDEC DILOOP REVERSE```2. 编写一个汇编程序,实现两个16位无符号整数的相乘,并将结果存放在指定的寄存器中。
答案:```assemblyMOV AX, 第一个数MOV BX, 第二个数MUL BX```三、挑战习题1. 编写一个汇编程序,实现一个简单的计算器,支持加法、减法、乘法和除法运算。
答案:```assemblyREAD_INPUT:; 读取用户输入; ...PARSE_INPUT:; 解析用户输入,获取操作数和运算符; ...CALCULATE:; 根据运算符进行相应的计算; ...DISPLAY_RESULT:; 将计算结果显示给用户; ...LOOP:; 循环执行计算器程序; ...```2. 编写一个汇编程序,实现一个简单的迷宫游戏,玩家通过键盘控制角色在迷宫中移动,并找到出口。
汇编语言程序设计习题及答案

汇编语言程序设计习题及参考答案习题一1.1把下列2、8、16进制数转换成为十进制数(1)(1011011)2(2)(0.10110)2(3)(111111.01)2(4)(1000001.11)2(5)(377)8(6)(0.24)8(7)(3FF)16(8)(2A.4)16解:(1)(1011011)2=64+16+8+2+1=91另解:原式=(5B)16=5×16+11=91(2)(0.10110)2=0.5+0.125+0.0625=0.6875(3)(111111.01)2=32+16+8+4+2+1+0.25=63.25另解:原式=(1000000-1+0.01)2=64-1+0.25=63.25(4)(1000001.11)2=64+1+0.5+0.25=65.75(5)(377)8=3×64+7×8+7=255另解:原式=(400-1)8=4×64-1=255(6)(0.24)8=2×0.125+4×0.015625=0.3125(7)(3FF)16=3×256+15×16+15=1023另解:原式=(400-1)16=4×256-1=1023(8)(2A.4)16=2×16+10+4×0.0625=42.25另解:原式=2×16+10+4÷16=42.251.2 把下列十进制数转换为2、16进制数(1)(127)10(2)(33)10(3)(0.3)10(4)(0.625)10(5)(1023.5)10(6)(377)10(7)(1/1024)10(8)(377/32)10解:(1)(127)10 =64+32+16+8+4+2+1= (111 1111)2=(7F)16另解:原式=(128-1)10=(1000 0000-1)2=(111 1111)2=(7F)16(2)(33)10=32+1= (10 0001)2=(21)16(3)(0.3)10 = (0.0100 1100 1……)2=(0.4CCC……)16(4)(0.625)10= 0.5+0.125=(0.101)2=(0.A)16(5)(1023.5)10 = 512+256+128+64+32+16+8+4+2+1+0.5=(11 1111 1111.1)2=(3FF.8)16(6)(377)10 =256+64+32+16+8+1=(1 0111 1001)2=(179)16(7)(1/1024)10=(0.0000 0000 01)2=(0.004)16(8)(377/32)10=(256+64+32+16+8+1)÷(32)= (101111001)2÷(100000)2=(1011.11001)2=(0B.C1)161.3 把下列二进制数转换为十六进制数(1)(100011)2(2)(0.11101)2(3)(11111.11)2(4)(0.00101)2解:(1)(100011)2=(10‟0011)2=23H(2)(0.11101)2=(0.1110‟1000)2=0.E8H(3)(11111.11)2=(1‟1111.1100)2=1F.CH(4)(0.00101)2=(0.0010‟1000)2=0.28H1.4 把下列十六进制数转换为二进制数(1)(3B6)16(2)(100)16(3)(80.2)16(4)(2FF.A)16解:(1)(3B6)16=(0011 1011 0110)2(2)(100)16=(0001 0000 0000)2(3)(80.2)16=(1000 0000.0010)2(4)(2FF.A)16 =(0010 1111 1111.1010)21.5 如果用24b储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?答:如果用24b储存一个无符号数,这个数的范围应为:0~224-1如果用24b储存一个补码表示的有符号数,这个数的范围应为:-223~+223-11.6 两个无符号数,它们的大小等于十进制数210和303,用N位二进制存储时,相加产生了进位,用N+1位二进制存储时,相加没有产生进位。
《汇编语言程序设计》练习题参考答案.

《汇编语言程序设计》练习题一参考答案一、简答题1.2.答:字节单元:(30022H) = AB H,(30024H) = EF H字单元:(30021H) = AB34 H,(30022H) = CDAB H。
3.答:(1)MOV BX, OFFSET BLOCK + 0AHMOV DX, [BX](2)MOV BX, 0AHMOV DX, BLOCK[BX](3)MOV BX, OFFSET BLOCKMOV SI, 0AHMOV DX, [BX][SI]4.答:BYTE_VAR 42 59 54 45 0C EE 00 ?? - 01 02 01 02 ?? 00 ?? 0102 01 02 ?? 00 ?? 01 02 - 01 02 ??WORD_VAR 00 00 01 00 02 00 00 00 - 01 00 02 00 00 00 01 0002 00 00 00 01 00 02 00 - 00 00 01 00 02 00 ?? ??FB FF 59 42 45 54 56 02 -5.答:宏展开:2 DATA0 DW ?2 DATA1 DW ?6.答:可以用来指示存储器地址的寄存器有BX、SP、BP、DI、SI、IP、CS、DS、7.答:该程序的第一个字的物理地址是0AAA40H。
8.答:(1) 064DH(2) 0691H(3) 05ECH9.答:(1)MOV AX, [ BX+0CH ]MOV ZERO, AX(2)MOV AX, ARRAY[BX]MOV ZERO, AX10答:DATASG SEGMENT AT 0E000HWORD_ARRAY LABEL WORDBYTE_ARRAY DB 100 DUP (?)DATASG ENDSSTACKSG SEGMENT PARA STACK 'STACK'DW 32 DUP (?)TOS LABEL WORDSTACKSG ENDSCODESG SEGMENTORG 1000HMAIN PROC FARASSUME CS:CODESG, DS:DATASG, ES:DATASG, SS:STACKSG START:MOV AX, STACKSGMOV SS, AXMOV SP, OFFSET TOSPUSH DSSUB AX, AXPUSH AXMOV AX, DATASGMOV DS, AXMOV ES, AX……RETMAIN ENDPCODESG ENDSEND START11.答: CLRB MACRO N, ARRAYCLDMOV CX, NMOV AL, 20HLEA DI, ARRAYREP STOSBENDM12.答:(1)AX、BX、CX、DX、AH、AL、BH、BL、CH、CL、DH、DL、13.答:唯一正确的是D。
东北大学19春学期《汇编语言程序设计》在线作业123答案

19春学期《汇编语言程序设计》在线作业1下列数据()在汇编语言中是合法的。
A.108D-108QB.102B*0ABHC.HIGHAXD.19BH+25D正确答案:D指令JMPWORDPTR[BX]转移的目标地址是()A.BX的内容B.SP+BX之和C.IP+[BX]之和D.BX指出的内存单元之内容正确答案:D已知IBMPC微机系统有一可屏蔽中断请求,CPU能响应的条件是() A.IF=1B.C.当前指令执行完毕D.前3个条件都具备正确答案:D确定下列那些数据在汇编语言中是非法的()。
A.19BH+25DB.25+ALC.108-102QD.101B*0ABH正确答案:B条件转移指令的转移目标距该指令的距离范围为()A.-128~127B.-126~129C.-130~125D.-127~128正确答案:B已知AL=48H,则AAM执行后,AX的值为:A.0408HB.0804HC.0702HD.0207H正确答案:C已知AL=47H,执行AAM后,AH、AL的内容应为()。
A.07H、01HB.04H、07HC.07H、04HD.01H、07H正确答案:A1MB为()。
A.210BB.216BC.220BD.1024KB正确答案:D已知AL=11H,CF=0,AF=1,执行DAA后,AL的内容应为()。
A.11HB.17HC.77HD.71H正确答案:B确定下列那些数据在汇编语言中是非法的()。
A.19BHB.25DC.108QD.101B正确答案:CMOVSB()A.错误B.正确正确答案:B当IF=1时,CPU处于关中断状态,IF=0时,处于开中断状态。
()A.错误B.正确正确答案:A中断服务程序开始必须有保存现场程序段。
()A.错误B.正确正确答案:B已知AX=0200H,BL=0FFH,执行IDIVBL后,AL=02H。
()A.错误B.正确正确答案:AX1DB′ABCD′()A.错误B.正确正确答案:BMOV[SI],10H()A.错误B.正确正确答案:AMOV10,AL()A.错误B.正确正确答案:ASHRAX,CX()A.错误B.正确正确答案:AADDAX,BL().A.错误B.正确正确答案:AOUT2F8H,AL()A.错误B.正确正确答案:A19春学期《汇编语言程序设计》在线作业2已知AL,BL中各存放一个无符号数,计算AL/BL的商,用下述程序段()A.DIVBLB.IDIVBLC."XORAH,AHDIVBL"D.CBWDIVBL正确答案:C当A≥B时转移的条件转移指令为(A、B为带符号数)()A.JAB.JAEC.JGD.JGE正确答案:D已知寄存器DS、CS、ES和SS的值分别为1000H,2000H,3000H和4000H,BP和SI的值分别为0100H和0200H,则指令MOVAX,[SI+BP-0100H]的源操作数的物理地址是()。
《汇编语言程序设计》习题解答及课程实验、设计辅导

实验一汇编程序的汇编及运行1.实验目的(1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看LST文件;(3)生成OBJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。
2.实验涉及知识汇编程序从编写到执行的过程编程→.ASM→编译→.OBJ→连接→.EXE→加载→内存中的程序→执行1)编写源程序用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为ASM。
2)对源程序进行汇编、连接操作如下:(1)在DOS状态下,进入MASM目录;(2)输入命令:MASM 文件名(连同扩展名);(3)在系统出现的提示中输入:object filename[.obj]:按回车键。
Source listling[nul.lst]:输入:文件主名,生成lst文件,也可以不生成,直接按回车键。
Lst文件用于查看编译为目标文件的过程中产生的中间结果。
Cross-reference [nul.crf]:按回车键。
(4)如果系统没有提示出错,那么编译过程就完成了。
如果提示错误则应用edit打开源文件进行修改,然后再重复2和3步骤(5)输入:link 文件主名(不要输扩展名,也可以输入扩展名.obj)run file [.exe]:按回车键。
List file [nul.map]:按回车键。
Libraries [.lib]:按回车键。
(6)没有提示错误,汇编过程就结束了,产生了exe可执行文件。
如果出现‘no strack segment’的错误警告,不用理会。
3)执行程序(由DOS中的COMMAND命令将文件加载入内存)在DOS提示符下直接输入文件主名就可以执行文件了。
程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。
3.实验内容1)将下面的数据段输入,取名1.ASM,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习中心:
专业:计算机应用技术
年级:年春/秋季
学号:
学生:
题目
1.谈谈你对本课程学习过程中的心得体会与建议?
时间过得真快,一学期的学习马上就要结束了,经过一个学期的学习,我也慢慢摸出了汇编学习的规律,特别感谢指导老师的耐心教导。
首先,学习这门语言时如果能联系上以前学过的其他高级语言的知识,则会起到良好的效果。
例如C语言程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF...THEN...ELSE...),循环结构(FOR...NEXT)三种结构,也通过C 语言了解并掌握了什么是子程序,什么是调用。
事实上,汇编语言中有关程序结构,子程序等等的知识都是跟C语言十分相似的,只是在编程时用到的语言不同:汇编语言完全面向机器,需要指明数据在寄存器、内存中的流向。
第二,学习汇编语言,首要问题是学习80X86指令系统。
如果能将指令系统中的各个助记符、格式等都能完全掌握并灵活运用,大部分工作就已经完成了。
指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。
如果不熟悉汇编指令的功能及其有关规定,那肯定不能灵活使用汇编语言。
还有一点十分重要。
和所有的程序设计语言一样,要学好汇编语言,实验是必不可少的环节。
我们深有体会:书上的程序都能看懂,基本原理也都明白,但是在自己亲手编写程序时,却无从下手,甚至连第一句该怎么写都不知道。
通过实验,可以在很大程度上加深印象。
在书上看程序,一切都是理所当然,十分顺利,而自己动手,才会真正发现自己的不足之处。
程序的编写在记事本中进行即可,掌握debug的使用对实验是有很大帮助的。
现在汇编语言的学课程已经告一段落了,学习过程中遇到的所有困难以及遗留的难点都需要我们在其余时间里逐步攻克,在打好基础的前提下,学习更加
专业的汇编知识。
以上便是我在学习汇编语言过程中所有的心得体会,我们会在不断的学习与实践中向着更深入的层面迈进。
2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。
《汇编语言程序设计》课程设计
注意:从以下5个题目中任选其一作答。
总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言
作业提交:
大作业上交时文件名写法为:[姓名奥鹏卡号学习中心](如:戴卫东101410013979浙江台州奥鹏学习中心[1]VIP)
以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。
如下图所示。
注意事项:
独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!
题目一:进制转换程序
要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。
(2)算法思路:比如可设计十进制转化十六进制的算法,
简单介绍该算法的基本思想,100字左右即可。
(3)算法程序框图:绘制流程图或原理图,从算法的开始
到结束的程序框图。
(4)主要函数代码:列出算法的具体代码。
(5)列出算法中使用指令的含义,比如解释MOV指令的
含义,ADD指令的含义,至少撰写十个指令。
总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!
答:算法思路
采用一个子程序DECIBIN实现从键盘取得十进制数并把它转换为二进制数;另一个子程序BINIHEX把此二进制数以十六进制数的形式在屏幕上显示出来。
为避免屏幕上的重叠,另外用CRLF子程序取得回车和换行效果。
各个子程序之间用BX寄存器来传送信息。
在过程DECIBIN中取得的输入数据转换为二进制数后保存在BX寄存器中,而过程BINIHEX需要把BX寄存器中的数用十六进制形式显示出来。
二、算法程序框图
开始
调用DECIBIN 调用CRLF 调用BINIHEX 调用CRLF
从键盘取得十进制数,保存在BX中
显示回车和换行
用十六进制数形式表达显示BX中的数
三、主要函数代码程序(指令含义在代码后面):DECIHEX SEGMENT ; 定义代码段
ASSUME CS:DECIHEX
MAIN PROC FAR ; 主程序
REPEAT: CALL DECIBIN ; 调用子程序输入十进制数CALL CRLF ; 显示回车、换行
CALL BINIHEX ; 以十六进制数输出
CALL CRLF ; 显示回车、换行
JMP REPEAT ; 转REPEA T,继续
MAIN ENDP
DECIBIN PROC NEAR ; 十进制数输入子程序
MOV BX, 0 ; BX保存输入数
NEWCHAR: MOV AH, 1
INT 21H ; 调用DOS功能输入字符
SUB AL, 30H ; 转为数0-9
JB EXIT ; 小于0,不是数字
CMP AL, 9D ; 与9比较
JA EXIT ; 大于,不是数字
CBW ; AL=>AX
XCHG AX, BX ; AX、BX互换
MOV CX, 10D ; CX=10
MUL CX ; AX=AX*CX
ADD BX, AX ; BX为前面输入的结果
JMP NEWCHAR
EXIT: RET
DECIBIN ENDP
BINIHEX PROC NEAR
MOV CH, 4 ; CH循环次数
ROTA TE: MOV CL, 4 ;每次循环输出一位十六进制数ROL BX, CL ; 即移位4个二进制位
MOV AL, BL ; AL=BL
AND AL, 0FH ; 取低4位
ADD AL, 30H ; 转变为ASCII码
CMP AL, 3AH ; 是否为’0’-‘9’
JL PRINTIT ; 是转PRINTIT
ADD AL, 7H ; 否转为’A’-‘F’
PRINTIT: MOV DL, AL ; DL=输出字符
MOV AH, 2
INT 21H ;调用DOS中断,显示字符
DEC CH
JNZ ROTA TE ; 没循环结束,继续
RET ; 返回
BINIHEX ENDP
CRLF PROC NEAR ; 输出回车、换行MOV DL, 0DH
MOV AH, 2
INT 21H ; 输出回车
MOV DL, 0AH
MOV AH, 2
INT 21H ; 输出换行
RET
CRLF ENDP
DECIHEX ENDS
END MAIN。