汇编语言程序设计习题-答案

合集下载

新版汇编语言程序设计习题答案(钱晓捷主编)电子教案

新版汇编语言程序设计习题答案(钱晓捷主编)电子教案

新版汇编语言程序设计习题答案(钱晓捷主编)新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识1.1、简述计算机系统的硬件组成及各部分作用1.2、明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB1.3、什么是汇编语言源程序、汇编程序、目标程序?1.4、汇编语言与高级语言相比有什么优缺点?1.5、将下列十六进制数转换为二进制和十进制表示(1)FFH (2)0H (3)5EH (4)EFH(5)2EH (6)10H (7)1FH (8)ABH1.6、将下列十进制数转换为BCD码表示(1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)24581.7、将下列BCD码转换为十进制数(1)10010001 (2)10001001 (3)00110110 (4)10010000(5)00001000 (6)10010111 (7)10000001 (8)000000101.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示(1)0 (2)-127 (3)127 (4)-57(5)126 (6)-126 (7)-128 (8)681.9、完成下列二进制数的运算(1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001(5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7)1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符?1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?1.12、简述Intel 80x86系列微处理器在指令集方面的发展。

汇编语言程序设计习题解答

汇编语言程序设计习题解答

汇编语言程序设计习题解答汇编语言程序设计习题解答1.指出下列指令的错误:(1)MOV AH,BX(2)MOV [BX],[SI](3)MOV AX,[SI][DI](4)MOV MYDAT[BX][SI],ES:AX(5)MOV BYTE PTR[BX],1000(6)MOV BX,OFFSET MYDAT[SI](7)MOV CS,AX答:(1)MOV AH,BX AH 为八位,BX为16位(2)MOV [BX],[SI] 两个操作数不能都是存储单元(3)MOV AX,[SI][DI] 一个操作数中不能用两个变址寄存器(4)MOV MYDAT [BX][SI],E8:AX ESES 后应为一个变址寄存器,表示偏移量(5)MOV BYTE PTR[BX],1000BYTE 说明时BX进行字节操作。

而1000为字(6)MOV BX,OFFSET MYDAT [SI]OFFSET 为取某个地址的偏移量,故后面不应用[SI],而应是一个符号地址。

(7)MOV 是数据寻址,不应用程序段寄存器CS.2.下面哪些指令是非法的?(假设OPl,OP2是已经用DB定义的变量)(1)CMP l5,BX(2)CMP OPl,25(3)CMP OPl,OP2(4)CMP AX,OPl答:(1) CMP 15,BX非法,两个操作数不能一个为字,一个为字节(2)CMP OP1,25 正确(3)CMP OP1,OP2 正确(4)CMP AX,OP1非法,两操作数不能一个为字,一个为字节3.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?(1)MOV BP,AL(2)MOV WORD_OP[BX+4*3][DI],SP(3)MOV WORD_OPl,WORD_OP2(4)MOV AX,WORD_OPl[DX](5)MOV SAVE_WORD,DS(6)MOV SP,SS:DATA_WORD[BX][SI](7)MOV [BX][SI],2(8)MOV AX,WORD_ OPl+WORD_OP2(9)MOV AX,WORD_ OPl-WORD_OP2+100(10)MOV WORD_ OPl,WORD_ OPl-WORD_OP2答:(1)MOV BP,AL非法,BP为16位 AL为八位(2)MOV WORD_OP[BX+4*3][DI] ,SP正确(3)MOV WORD_OP1 ,WORD_OP2非法,两个操作数不能都是变量(4)MOV AX , WORD_OP1[DX]非法,[DX]应改为[BX],[BP],[SI]或[DI],则为寄存器相对寻址。

第4章 汇编语言程序设计习题解答

第4章 汇编语言程序设计习题解答

习题4.10 习题
• 下面程序段是实现从键盘输入十个一位 进制数后 下面程序段是实现从键盘输入十个一位10进制数后 累加,最后累加和以非压缩BCD码形式存放在 码形式存放在AH 累加,最后累加和以非压缩 码形式存放在 高位) 低位) (高位)和AL (低位)中。试把程序段中所空缺 的指令填上。 的指令填上。 XOR BX ,BX ;BX清零 清零 MOV CX,10 ; 传送数据长度 LOP:MOV AH,01H;中断 中断INT 21H的01H号调用 中断 的 号调用 INT 21H ;中断调用 中断调用P172, 键入值送入 中 键入值送入AL中 中断调用 MOV AH,BH ;将BH的内容传 的内容传AH 将 的内容传 ADD AL,BL ;BL与AL的值相加 结果在 中 的值相加,结果在 与 的值相加 结果在AL中 AAA ;非压缩 非压缩BCD码加法调整 非压缩 码加法调整 MOV BX,AX ;累加结果送 累加结果送BX 累加结果送 LOOP LOP ;CX-1→CX,判断 判断CX≠0,下列要求在数据段中依次书写各数据定义语句: 试按下列要求在数据段中依次书写各数据定义语句: 为首字节的连续存储单元中存放20H个重 (1)以DA1为首字节的连续存储单元中存放 ) 为首字节的连续存储单元中存放 个重 复的数据序列: , , 个 ,一个7。 复的数据序列:2,3,10个4,一个 。 为字符串变量, (2)DA2为字符串变量,用字变量(DW)设置一字 ) 为字符串变量 用字变量( ) 符串; 符串;‘STUDENTS’(按次顺序存放在各单元中)。 (按次顺序存放在各单元中)。 赋值以DA1为首地址 (3)用等值语句给符号 )用等值语句给符号COUNT赋值以 赋值以 为首地址 的数据区共占有的字节数, 的数据区共占有的字节数,此等值语句必须放在最 后一语句。 后一语句。 解答: 解答: ),7) (1)DA1 DB 20H DUP(2,3,10 DUP(4), ) ) ( , , ( ), (2)DA2 DW ‘TS’, ‘DU’,‘NE’,’ST’, ) , , , , (3) COUNT EQU DA2- DA1 )

汇编语言程序设计试题参考答案

汇编语言程序设计试题参考答案

汇编语言程序设计参考答案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. 汇编语言的概念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. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。

汇编语言程序设计习题答案

汇编语言程序设计习题答案

第一章微型计算机系统概述1.3习题与综合练习1.解释和区别下列名词术语(1)微处理器(MP):具有中央处理器功能的大规模集成电路器件微型计算机(MC)微型计算机系统(MCS)(2)硬件:硬件是计算机系统的躯体,由控制器,运算器,存储器,输入设备,输出设备5大部分组成。

软件:软件是计算机的头脑和灵魂,可分为系统软件和应用软件。

(3)字节:8位二进制是一个字节。

字:16位二进制构成一个字。

字长:计算机的运算部件能同时处理的二进制数据的位数。

(4)指令指针:存放BIU要取的下一条指令的偏移地址。

指令寄存器:指令译码器:状态寄存器:(5)存储单元:存储内容:存储地址:存储容量:(6)RAM:ROM:软件固化:2.冯·诺依曼计算机结构的特点是什么?(1)采用二进制数的形式表示数据和指令。

(2)将指令和数据存放在存储器中。

(3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5大部分组成。

3.件数计算机系统中复杂指令集和精简指令集的特点和用途。

复杂指令集(CISC):在微型计算机的体系结构组成结构上是以复杂指令为设计的计算机,在指令的运行过程中按指令的复杂程度来指挥计算机完成各条指令,由于各条指令复杂程度不同分配的时钟周期各不相同,执行指令所需时间就不相同。

CISC体系的指令集由微程序来实现,即每一个操作由若干微操作的程序组合来实现。

所以CISC可以使用微指令编程的方式实现多种和功能复杂的指令。

精简指令系统(RISC):不管计算机的指令如何复杂,在一个计算机时钟周期内完成,计算速度快,指令集简单。

每一条指令直接有硬布线实现,即它的每条指令原则上有自己的一套逻辑时序电路直接实现,所以单条指令的实现所占用的硬件资源较多。

因为该体系没有能采用增加单条指令的功能或高位的指令语义,也没有增加指令的条数,而是集中于它的精简指令集上。

4.CPU是计算机系统中的重要部件,试说明CPU的结构和功能。

微处理器是计算机中最关键的部件,由控制器,运算器,寄存器组和辅助部件组成。

IBM-PC汇编语言程序设计课后习题答案

IBM-PC汇编语言程序设计课后习题答案

第五章试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。

答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP ()DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。

汇编语言程序设计(第四版)第2章【课后答案】讲解

汇编语言程序设计(第四版)第2章【课后答案】讲解

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第2章8086的指令系统〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。

(1)mov ax,1200h(2)mov ax,bx(3)mov ax,[1200h](4)mov ax,[bx](5)mov ax,[bx+1100h](6)mov ax,[bx+si](7)mov ax,[bx][si+1100h]〔解答〕(1)AX=1200H(2)AX=0100H(3)AX=4C2AH ;偏移地址=bx=0100h(4)AX=3412H ;偏移地址=bx=0100h(5)AX=4C2AH ;偏移地址=bx+1100h=1200h(6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h(7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出下列指令的错误(1)mov cx,dl(2)mov ip,ax(3)mov es,1234h(4)mov es,ds(5)mov al,300(6)mov [sp],ax(7)mov ax,bx+di(8)mov 20h,ah〔解答〕(1)两操作数类型不匹配(2)IP指令指针禁止用户访问(3)立即数不允许传给段寄存器(4)段寄存器之间不允许传送(5)两操作数类型不匹配(6)目的操作数应为[ SI ](7)源操作数应为[BX+DI](8)立即数不能作目的操作数〔习题2.3〕已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1分析执行下列指令序列后的结果:1)MOVAX,1234HMOVBX,00FFHANDAX,BX【答】(AX)=0034H2)MOVAL,0101BANDAL,000111B;(AL)=000101BORAL,11000B;(AL)=110101BXORAL,0011B;(AL)=11010BNOTAL【答】(AL)=00101B3)MOVDL,05HMOVAX,0A00HMOVDS,AXMOVSI,0HMOVCX,0FHAGAIN:INCSICMP[SI],DLLOOPNE AGAINHLT本程序实现了什么功能?【答】在以0A001H开始的15个单元中查找05H。

4)MOVAX,DSEGADDRMOVDS, AXMOVES,AXMOVSI, OFFSET B1ADDRMOVDI,OFFSET B2ADDRMOVCX,NCLDREPMOVSBHLT本程序实现了什么功能?【答】将B1ADDR中N个字节数据传送到B2ADDR开始的15个存储单元。

5)MOVAX, 0HMOVDS,AXMOVES, AXMOVAL,05HMOVDI,0A000HMOVCX,0FHCLDAGAIN:SCASBLOOPNEAGAINHLT本程序实现了什么功能?【答】从地址0A000H开始的15个单元中查找字节型数据05H,用条件循环LOOPNZ,控制数据05H的查找。

4.2阅读程序:1).CLDLEADI,[0100H]MOVCX, 0080HXORAX, AXREPSTOSW本程序实现了什么功能?【答】将DS中起始地址为0100H的128个字节单元清零。

2).MOVAL, 08HSAL,01H;(AL)=000100HMOVBL, ALMOVCL ,02HSAL,CL;(AL)=01000HADDAL,BL;(AL)=0100H本程序实现了什么功能?【答】将AL中的内容乘以10。

4.3试分析下列程序完成什么功能?MOVDX,3F08HMOVAH,0A2HMOVCL,4SHLDX,CL;(DX)=F080HMOVBL,AHSHLBL,CL;(BL)=20HSHRBL,CL;(BL)=02HORDL,BL;(DL)=82H【答】将DX中的低4位数据8H分离出来,将AH中的低4位数据2H分离出来,合并为82H存放在DL。

4.4已知程序段如下:MOVAX,1234HMOVCL,4ROLAX,CLDECAXMOVCX,4MULCX试问:(1)每条指令执行后,AX寄存器的内容是什么?(2)每条指令执行后,CF,SF及ZF的值分别是什么?(3)程序运行结束时,AX及DX寄存器的值为多少?【答】MOVAX,1234H; (AX)=1234H, CF=SF=ZF=0 MOVCL,4ROLAX,CL; (AX)=2341H ,CF=1,SF=ZF=0DECAX; (AX)=2340H,CF=1,SF=ZF=0MOVCX,4;MULCX;(AX)= 8000H ,CF=ZF=0,SF=1,DX=04.5试分析下列程序段:ADDAX,BXJNCL2SUBAX,BXJNCL3JMPSHORTL5如果AX、BX的内容给定如下:AXBX(1)14C6H80DCH(程序转向L2)(2)B568H54B7H(程序转向SHORTL5)问该程序在上述情况下执行后,程序转向何处?【答】(1)程序转向L2。

(2)程序转向SHORTL5。

4.6以下为某个数据段,试问各个变量分别占多少字节,该数据段共占多少字节?DATASEGMENTVAR1DW9;2字节VAR2DD10 DUP(?),2;44字节VAR3DB2 DUP(?,10 DUP(?));22字节VAR4DB ‘HOW ARE YOU';11字节DATAENDS【答】该数据段共占79字节。

4.7下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。

VAR1DB10,2;2字节VAR2DW5DUP(?),0;12字节VAR3DB‘HOW ARE YOU?',‘$';13字节VAR4DD-1,1,0;2字节Var1Var2Var3Var410?HFFH2?????????00OWAREYOU?$FFHFFHFFH01H00H00H00H00H00H00H00H4.8编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。

【答】参考程序:OLDSDB1,2,3,4,5NEWSDB1,2,3,4,5RESULTDB?MOVSI,OFFSETOLDSMOVDI,OFFSETNEWSMOVCX,10CLDREPCMPSBJNZNOEQU;串不相等转MOVAL,0JMPOUTPTNOEQU:MOVAL,0FFHOUTPT:MOVRESULT,ALSTOP:JMPSTOP4.9编程求和Y=A1 + A2 +…. + A100。

其中Ai为字节变量。

【答】参考程序:DATASEGMENTTABLEDW12,3,45,..YALDW?YAHDW?DATAENDS……….MIANPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVDX,0XORAX, AX;清AXMOVBX, OFFSET TABLEMOVCX, 4CLCLP:ADDAX, [BX];求和JNCDONINCDXCLCDON:INCBXINCBX;指向下一个数LOOPLP;未加完,继续MOVYAL,AX;存和MOVYAH,DXMAINENDPCODEENDSENDSTART4.10内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。

编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。

【答】参考程序:1325+9839=?DATASEGMENTFIRSTDB05H,02H,03H,01H ; SECOND DB09H,03H, 08H,09H; THIRDDB20DUP(?) DATAENDS STACKSEGMENTST1DB100DUP(‘SA’)TOP1EQULENGTHST1 STACKENDS CODESEGMENT ASUMMECS:CODE,DS:DATA,SS:STACKMAINPROCFARSTART:MOVAX, DAT;初始化数据段MOVDS, AXMOVAX, STACK;初始化堆栈段MOVSS, AXMOVAX, TOP1MOVSP, AXMOVCX, 4;计算4次MOVBX, OFFSETDAT1;取数据地址MOVSI , OFFSETDAT2;取数据地址MOVDI , OFFSET SUM;取结果地址MOVAH, 00H;将暂存标志的AH清0 DON1:MOVAL, [BX];取第一个数SAHF;将AH中的标志送标志寄存器ADCAL, [DI];与第二个数带进位加AAA;十进制校正LAHF;将标志寄存器内容送AH ORAL, 30H;计算值拼成ASCII码MOV[DI], AL;存结果的ASCII码INCBX;指向第一个数的下一位INCSI;指向第二个数的下一位INCDI;指向结果单元的下一位LOOPDON1;未计算完,继续ANDAH, 01H;将最高位的进位标志送AH ORAH, 30H;最高位的进位位拼成ASCII码MOV[DI], AH;存结果的最高位MOVAH, 02H;调用DOS的02H功能显示MOVCX, 05H;显示数据的位数DON2:MOVDL,[DI];显示数据送DLINT21H;显示DECDI;显示数据所在存储单元加一LOOPDON2;未显示完,继续MOVAH, 4CH;返回DOSINT21HRETMAINENDPCODEENDSENDSTART4.11试编程序,统计由400H开始的16K个单元中所存放的字符“A“的个数,并将结果存放在DX中。

【答】参考程序DATASEGMENTDATA1DB'DFASFAAAFDFAAFFFA'COUNTEQU$-DATA1DATAENDSSTACKSEGMENTSTADB100DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENT ASSUMECS: CODE,DS: DATA,SS: STACK BEGIN: MOVAX,DATA MOVDS,AX MOVAX,STACK MOVSS,AX MOVAX,TOP MOVSP,AX MOVCX,COUNT MOVDX,0 LEASI,DATA1 MOVBL,'A' NEXT :CMP[SI],BL JNZOTHER INCDX OTHER:INCSILOOPNEXTCODEENDSENDBEGIN4.12统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区。

【答】参考程序:BLOCKDB-1,-3,5,6,-2,0,20,10PLUS_DDB8DUP(?);正数缓冲区MINUS_DDB8DUP(?);负数缓冲区PLUSDB0MINUSDB0MOVSI,OFFSETBLOCKMOVDI,OFFSETPLUS_DMOVBX,OFFSETMINUS_DMOVCX, 8;数据个数送CXGOON:LODSB;AL←[SI]TESTAX,80HJNZJMIUS;为负数,转INCPLUS;正数个数加一STOSB;[DI]←AL,传正数JMPAGAINJMIUS:INCMINUS;负数个数加一XCHGBX,DISTOSB;送负数到缓冲区XCHGBX,DIAGAIN:DECCXJNZGOON4.13编写一个子程序将AX中的十六进制数,转换成ASCII码,存于ADR开始的四个单元中。

提示:1)、AX中的数从左到右,转换成ASCII码,用循环左移ROL和AND 指令,把提出的一个十六进制数置BL中;2)、0 ~ 9的ASCII码:30 ~ 39H,A ~ F的ASCII码:41H ~ 46H。

(先把每个数加30H,判断是否为数字0 ~ 9?若是A ~ F,再加07H,得字母的ASCII码。

)【答】参考程序:DATASEGMENTADRDB 4 DUP(?)DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:MOVAX,7EC3H;假设ax中存放7ec3h LEASI,ADRMOVDL,4AGAIN:MOVBX,AXANDBX,000FHADDBL,30HCMPBL,'9'JGADUSTJMPSTOREADUST:ADDBL ,07HSTORE:MOV[SI],BLINCSIMOVCL,4ROLAX,CLDECDLJNZAGAINMAINENDPCODEENDSENDSTART4.14编写一个子程序将AX中的2进制数,转换成10进制ASCII码,存于ADR 开始的五个单元中。

相关文档
最新文档