完美.格式.编辑
专业.资料.整理
习题四
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