新编汇编语言程序设计四五章习题参考解答.doc
《新编汇编语言程序设计四五章习题参考解答.doc》由会员分享,可在线阅读,更多相关《新编汇编语言程序设计四五章习题参考解答.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、|习题四4.5 已知(AX)= 836BH,X 分别取下列值,执行“CMP AX, 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=00014.7 测试名为 X 的一个字节,如果 X 的第 1,3 位均为 1,转移到 L1,如果只有一位为 1,转移到 L2,如果两位全为0,转移到 L3。写出对应的指
2、令序列。答: MOV AL, XAND AL, 0000 1010BJZ L3CMP AL, 0000 1010BJE L1JMP L24.12 计算分段函数: 2653XY32X 的值从键盘输入,Y 的值送显示器输出。答: INCLUDE YLIB.HDATA SEGEMNTMESS1 DB 0DH, 0AH, Input value of X please : $MESS2 DB 0DH, 0AH, Y= : $DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXLEA DX, MESS1CAL
3、L READINT ;输入 X 的值CMP AX, -2JGE L2L1: SUB AX, 3 ;AXX-3JMP DONEL2: CMP AX, 3JG L3MOV BX, AXADD AX, AX ;AX2XADD AX, AX ;AX4XADD AX, BX ;AX5XADD AX, 6 ;AX5X+6|JMP DONEL3: MOV AX, 2 ;AX2DONE:LEA DX, MESS2CALL WRITEINT ;输出 Y 的值CALL CRLFMOV AX, 4C00HINT 21HCODE ENDSEND START4.14 编写程序,求 10 元素字数组 LIST 中绝对值最
4、小的数,存入 MIN 单元。答: DATA SEGEMNTLIST DW -56, +12, 88, -126, -5, 16, 32, -99, 72, -18MIN DW ?MINABS DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV AX, LISTMOV MIN, AX ;将数组第一个元素假设为绝对值最小的数MOV MINABS, 32767 ;最小的绝对值假设为 32767LEA SI, LISTMOV CX, 10AGAIN: MOV AX, SICMP AX, 0J
5、GE SKIP1NEG AX ;求绝对值SKIP1: CMP AX, MINABS ;绝对值与假设的最小绝对值比较JGE SKIP2 ;假设的绝对值较小,跳过MOV MINABS, AX ;保存新的最小绝对值MOV AX, SI ;取出新的绝对值最小的数MOV MIN, AX ;保留新的绝对值最小的数SKIP2: ADD SI, 2LOOP AGAINMOV AX, 4C00HINT 21HCODE ENDSEND START说明:一定要预设最小的绝对值和绝对值最小的数,而且这个绝对值最小的数必须来自 LIST 数组。4.16 一个有符号字数组以 0 为结束标志,求这个数组的:最大值、最小值、
6、平均值。答: DATA SEGEMNT|LIST DW -56, +12, 88, -126, -5, 16, 32, -99, 72, -18, 0MIN DW ?MAX DW ?AVG DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV MIN, 32767 ;将 32767 假设为最小的数MOV MAX, -32768 ;将-32768 假设为最大的数MOV AVG, 0 ;AVG 用作累加器,清零LEA SI, LISTMOV CX, 0AGAIN: MOV AX, SICM
7、P AX, 0JZ DONE ;找到零元素,转 DONE 结束处理INC CX ;纪录非零元素个数ADD AVG, AX ;累加CMP AX, MINJGE SKIP1MOV MIN. AX ;比预设最小值还小,保留SKIP1: CMP AX, MAXJLE SKIP2MOV MAX, AX ;比预设最大值还大,保留SKIP2: ADD SI, 2JMP AGAINDONE: JCXZ NULL ;元素个数为零,转 NULL 处理MOV AX, AVGCWDIDIV CXMOV AVG, AX ;计算平均值JMP EXITNULL: MOV MIN, 0 ;元素个数为 0,将“最大值”、 “最
8、小值”MOV MAX, 0 ;“平均值”清零MOV AVG, 0EXIT: MOV AX, 4C00HINT 21HCODE ENDSEND START4.21 编写程序,把一个 30 个元素的有符号字数组 ARRAY 按照各元素的正负分别送入数组 P 和 M,正数和零元素送P数组,负数送 M 数组。答: DATA SEGEMNT|ARRAY DW 30 DUP(?) ;汇编之前置入数据P DW 30 DUP(?)M DW 30 DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXLEA
9、 BX, ARRAY ;ARRAY 数组指针MOV SI, 0 ;P 数组指针MOV DI, 0 ;M 数组指针MOV CX, 30ONE: MOV AX, BX ;从 ARRAY 数组取出一个数据AND AX, ALJGE PLUS ;正数、零转 PLUSMINUS: MOV MDI, AX ;负数存入 M 数组ADD DI, 2JMP NEXTPLUS: MOV PSI, AX ;正数、零存入 P 数组ADD SI, 2NEXT: ADD BX, 2 LOOP ONEMOV AX, 4C00HINT 21HCODE ENDSEND START4.30 编写程序,输入 N,计算: S=1*2
10、+2*3+(N-1)*N 答: INCLUDE YLIB.HCODE SEGMENTASSUME CS: CODEMESS1 DB 0DH, 0AH, Input N please: $MESS2 DB 0DH, 0AH, S= $START:PUSH CSPOP DSLEA DX, MESS1CALL READDEC ;输入 NMOV CX, AXXOR BX, BX ;BX 用作累加器ONE: MOV AX, CXMOV SI, AXDEC SIMUL SI ;计算 J*(J-1)ADD BX, AX ;累加LOOP ONE|LEA DX, MESS2MOV AX, BXCALL WRIT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新编 汇编 语言程序设计 四五 习题 参考 解答
限制150内