c程序设计语言的opds书源,新编汇编语言程序设计四五章习题参考解答.doc

本文涉及汇编语言编程,详细解释了如何使用CMP指令进行数值比较,并给出不同情况下的标志位状态。此外,还展示了如何编写程序来处理特定逻辑条件,如检查字节数据的特定位模式,并计算分段函数。最后,提供了两个程序实例,一个是找出字数组中绝对值最小的数,另一个是处理有符号字数组的最大值、最小值和平均值计算。
摘要由CSDN通过智能技术生成

完美.格式.编辑

专业.资料.整理

习题四

4.5 已知(AX)= 836BH,X分别取下列值,执行“CMPAX, X”后,标志位ZF、CF、OF、SF各是什么?

(1)X=3000H(2)X=8000H(3)X=7FFFFH(4)X=0FFFFH(5)X=0

答:上述指令执行后,标志位ZF、CF、OF、SF 的状态分别是:

(1) ZCOS=0010 (2) ZCOS=0000 (3) ZCOS=0010 (4) ZCOS=0101

(5) ZCOS=0001

4.7 测试名为X的一个字节,如果X的第1,3位均为1,转移到L1,如果只有一位为1,转移到L2,如果两位全为0,

转移到L3。写出对应的指令序列。

答:MOVAL, X

ANDAL, 0000 1010B

JZL3

CMPAL, 0000 1010B

JEL1

JMPL2

4.12 计算分段函数:

X的值从键盘输入,Y的值送显示器输出。

答:INCLUDEYLIB.H

DATASEGEMNT

MESS1DB0DH, 0AH, ‘Input value of X please : $’

MESS2DB0DH, 0AH, ‘ Y= : $’

DATAENDS

CODESEGMENT

ASSUMECS: CODE, DS: DATA

START:

MOVAX, DATA

MOVDS, AX

LEADX, MESS1

CALLREADINT;输入X的值

CMPAX, -2

JGEL2

L1:SUBAX, 3;AX←X-3

JMPDONE

L2:CMPAX, 3

JGL3

MOVBX, AX

ADDAX, AX;AX←2X

ADDAX, AX;AX←4X

ADDAX, BX;AX←5X

ADDAX, 6;AX←5X+6

JMPDONE

L3:MOVAX, 2;AX←2

DONE:

LEADX, MESS2

CALLWRITEINT;输出Y的值

CALLCRLF

MOVAX, 4C00H

INT21H

CODEENDS

ENDSTART

4.14 编写程序,求10元素字数组LIST中绝对值最小的数,存入MIN单元。

答:DATASEGEMNT

LISTDW-56, +12, 88, -126, -5, 16, 32, -99, 72, -18

MINDW?

MINABSDW?

DATAENDS

CODESEGMENT

ASSUMECS: CODE, DS: DATA

START:

MOVAX, DATA

MOVDS, AX

MOVAX, LIST

MOVMIN, AX;将数组第一个元素假设为绝对值最小的数

MOVMINABS, 32767;最小的绝对值假设为32767

LEASI, LIST

MOVCX, 10

AGAIN:MOVAX, [SI]

CMPAX, 0

JGESKIP1

NEGAX;求绝对值

SKIP1:CMPAX, MINABS;绝对值与假设的最小绝对值比较

JGESKIP2;假设的绝对值较小,跳过

MOVMINABS, AX;保存新的最小绝对值

MOVAX, [SI];取出新的绝对值最小的数

MOVMIN, AX;保留新的绝对值最小的数

SKIP2:ADDSI, 2

LOOPAGAIN

MOVAX, 4C00H

INT21H

CODEENDS

ENDSTART

说明:一定要预设最小的绝对值和绝对值最小的数,而且这个绝对值最小的数必须来自LIST数组。

4.16 一个有符号字数组以0为结束标志,求这个数组的:最大值、最小值、平均值。

答:DATASEGEMNT

LISTDW-56, +12, 88, -126, -5, 16, 32, -99, 72, -18, 0

MINDW?

MAXDW

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值