第五章 汇编语言程序设计

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

第五章汇编语言程序设计

一、程序分析题

1 .MOV AL,10

ADD AL,AL

SHL AL,1

MOV BL,AL

ADD AL,BL

问:AL= BL=

解: AL=50H(或80)BL=28H(或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)程序执行后,AX= BX= CX=

解:(1)求2~20间的偶数和。(完成累加求和,即求:2+4+6+8+10+12+14+16+18+20)。(2)AX=110,BX=22,CX=0

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的值是多少?

解:(1)该数据段共占用11个字节

(2)Yl =4321H,Y2=3,X3=109H这里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 DA1+1

MOV CH,TYPE DA1

HLT

解: AX=0064H BX=1200H CX=6400H

6.有数据段如下:

DATA SEGMENT

ORG 1200H

BUF DB 5,6,‘78’

X1 DW 1,37H,46H

Y1 EQU X1-BUF

DATA ENDS

(1)该程序段占有的存储单元字节数是多少?

(2)Y1的值是多少?

解:(1)占10个字节单元(2)Y1=2

二、程序填空题

1. AX中有一个无符号数,若其值小于100,就加100;若其值大于等于100,就减50,但计算结果仍保存在AX中。在下面程序段每一空白处填上一条适当指令,以实现其功能。

CMP AX,100

SUB AX,50

PP:ADD AX,100

DONE:HLT

解:第一空白处填JC PP

第二空白处填JMP DONE

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时(正数时)转SYM,给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有两个数据: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,7788H

DAT3 DW ?,?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START;MOV AX,DATA

MOV DS,AX

MOV AX,DAT1+2

SUB AX,DAT1

MOV DAT3,AX

MOV AX,DAT2

ADD AX,DAT2+2

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码,并以压缩形式存放在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中

相关文档
最新文档