《第五章汇编语言程序设计.pdf》由会员分享,可在线阅读,更多相关《第五章汇编语言程序设计.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!第五章 汇编语言程序设计 一、程序分析题 1 MOV AL,10 ADD AL,AL SHL AL,1 MOV BL,AL ADD AL,BL 问:AL=BL=解:AL=50H(或 80)BL28H(或 40)2.MOV BX,00FFH AND BX,0FFFH OR BX,0F0FH XOR BX,00FFH 问:BX 解:2.BX=0F00H 3.XOR AX,AX MOV BX,2 MOV CX,10 LP:ADD AX,BX ADD BX,2 LOOP LP HLT(1)该程序的功能是什么?
2、(2)程序执行后,AX BX CX 解:(1)求 220间的偶数和。(完成累加求和,即求:2+46 8 101214161820)。(2)AX110,BX=22,CX0 4 设 DS=1000H,有如下数据段:DATA SEGMEN ORG 10011 Xl DW 11H,22H,33H X2 DB 33H,44H,55H Y1 EQU 4321H Y2 EQU$-X2 X3 DB 88H,99H DATA ENDS 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(1)该数据段共占用多少字节的存储单元?(2)Y1和 Y2 的值为多少?X3 的值是
3、多少?解:(1)该数据段共占用 11 个字节 (2)Yl=4321H,Y23,X3109H这里 X3 是用 DB 定义的,它是变量名。它的偏移地址为 109H。Y1和 Y2 是由 EQU定义的,它们是符号名,是常量。5.下列程序段执行后,寄存器 AX、BX 和 CX 的值各为多少?ORG 1200H DA1 DW 100 MOV AX,DA1 MOV BX,0FFSET DA1 MOV CL,BYTE PTR DA11 MOV CH,TYPE DA1 HLT 解:AX0064H BX=1200H CX6400H 6.有数据段如下:DATA SEGMENT ORG 1200H BUF DB 5,
4、6,78 X1 DW 1,37H,46H Y1 EQU X1-BUF DATA ENDS(1)该程序段占有的存储单元字节数是多少?(2)Y1 的值是多少?解:(1)占 10 个字节单元 (2)Y12 二、程序填空题 1.AX中有一个无符号数,若其值小于 100,就加 100;若其值大于等于 100,就减 50,但计算结果仍保存在 AX 中。在下面程序段每一空白处填上一条适当指令,以实现其功能。CMP AX,100 SUB AX,50 PP:ADD AX,100 DONE:HLT 解:第一空白处填 JC PP 第二空白处填 JMP DONE 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请
5、联系删除!我们将竭诚为您提供优质的文档!2.下面程序段判断 A 单元的值,并根据其值是负数、0 或正数,分别将 0FFH,00H,01H送入 AL 中。在空白处填入适当指令。MOV AL,A CMP AL,0 JZ SYM MOV AL,OFFH JMP DONE SYM:MOV AL,1 DONE:HLT 解:第一个空填 JZ DONE,因为程序已经给 AL 赋值,若 AL 等于 0 的话,AL 中放的结果值也为 0,所以转DONE即可。第二个空应填 TEST AL,80H,因为其下面一条指令是 JE SYM,其上一条指令应能影响 ZF 标志位,所以使用测试指令;即为 0 时(正数时)转 S
6、YM,给 AL 赋 1。为非零时,即为负数时 AL 赋 OFFH。所以答案为:JZ DONE或 JE DONE TEST AL,80H或 AND AL,80H 3.对于符号函数 请在下面程序段中每一空白处填上一条适当指令,实现符号函数功能。MOV AL,X CMP AL,0 MOV Y,1 AA:JL BB MOV Y,0 BB:MOV Y,0FFH DONE:HLT 解:第一空处填:JLE AA 第二空处填:JMP DONE 第三空处填:JMP DONE 三、编制程序 1.写出完成下列功能的程序段:(1)在数据段中,字变量 DAT1有两个数据:1122H和 3344H,字变量 DAT2有两个
7、数据:5566H和 7788H,字变量 DAT3为两个空单元。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(2)将 DAT1的第二个字数据传送到 AX。(3)将 AX 内容与 DAT1的第一个字数据相减,将其差存人到 DAT3的第一个字单元中。(4)将 DAT2中的第一个字送 AX,并与 DAT2中第二个字相加,其和存于 DAT2的第一个字单元中。(5)将 DAT2中的字单元数据除以 DAT3第一个字单元中的数据,其商存于 DAT3的第二个字单元中。解:DATA SEGMENT DAT1 DW 1122H,3344H DAT2 DW 5566H
8、,7788H DAT3 DW?,?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START;MOV AX,DATA MOV DS,AX MOV AX,DAT12 SUB AX,DAT1 MOV DAT3,AX MOV AX,DAT2 ADD AX,DAT22 MOV DAT2,AX CWD IDIV DAT3 MOV DAT3十 2,AX MOV AH,4CH INT 21H CODE ENDS END START 2.在 DAT 和 DAT1两个字节变量单元中有两个十进制数的 ASCII 码,编程实现将这两个 ASCII 码转换为两个 BCD 码
9、,并以压缩形式存放在 REST字节变量单元中。解:MOV AL,DAT SUB AL,30H ;将 ASC码转为 BCD 码 MOV CL,4 SHL AL,CL ;将 BCD 码放在 AL 高四位中 MOV BL,DAT1 SUB BL,30H ;将 DAT1中的 ASC码转为 BCD 码 OR AL,BL ;将两个 BCD 码合并在 AL 寄存器中 MOV REST,AL ;将压缩形式的 BCD 码存入 REST中 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!HLT 3.在 DAT单元内有一个带符号的数 X,编一程序段,根据 X 的情况进行
10、如下处理:若 X 为正奇数,则将 X 与 BUF单元内容相加;若 X 为正偶数,则将 X 与 BUF单元内容相与;若 X 为负奇数,则将 X 与 BUF单元内容相或;若 X 为负偶数,则将 X 与 BUF单元内容相异或。解:这是一个多分支结构程序,要对正负数判断,还要对奇偶数进行判断。正负数判断看最高位是否为1,为1是负数,否则为正数。奇偶判断是对 D0 位进行判断,若为1,则为奇数,否则为偶数。MOV AL,DAT AND AL,DAT JNS POSI ;若为正数转 POS1 TEST AL,01H ;测试负数的奇偶性 JZ M ;若为负偶数转 M OR AL,BUF ;若为负奇数进行或运
11、算 JMP DONE M:XOR AL,BUF ;负偶数进行异或运算 JMP DONE POSI:TEST AL,01H ;判断正数的奇偶性 JZ N ;为正偶数,转 N ADD AL,BUF ;为正奇数进行加运算 JMP DONE N:AND AL,BUF ;正偶数进行与运算 DONE:MOV BUF,AL HLT 4.从 NUMB单元起有 100 个数,其值在 0 一 100 之间。试编程序实现以下数据统计:(1)统计大于 60 小于 100 的数据个数,统计结果存于 C0 单元。(2)统计等于 100 的数据个数,统计结果存于 C01 单元。(3)统计等于 0 的数据个数,统计结果存于
12、C0 十 2 单元。(4)当小于 60 的数等于 10 个时,结束统计,同时置 C0 单元为 0FFH。解:这是一个典型的多分支带循环的问题。应首先确定算法流程。其流程图和编程如下:MOV CX,0064H ;长度送 CX LEA BX,NUMB ;100 个数的首地址送 BX MOV AX,0 ;清 AH,AL MOV CO,AX ;清 C0,C01 单元 MOV CO2,AX ;清 C02,C 3 单元 LP:MOV AL,BX ;取数 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CMP AL,100 ;与 100比较 JZ L100 ;若等于 100,转 L100 CMP AL,60;JNC L60 ;若 AL)60,转 L6。INC AH ;AL60,计数器加 1 CMP AH,10 ;60 为 10 个时 JZ DONE1 ;转 DONE1执行 OR AL,AL;JZ LO ;若 AL=0,转 LO 执行 JMP NEXT L100:INC C01 ;数 100的个数加 1 JMP NEXT L60:INC C0 JMP NEXT LO:INC C0十 2 ;AL0,零计数器加 1 NEXT:INC BX LOOP LP JMP DONE DONEI:MOV C0,0 FFH DONE:HLT