《新编汇编语言程序设计四五章习题参考解答计算机C资料_计算机-C++资料.pdf》由会员分享,可在线阅读,更多相关《新编汇编语言程序设计四五章习题参考解答计算机C资料_计算机-C++资料.pdf(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、新编汇编语言程序设计四五章习题参考解答 1/29 习题四 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=0001 4.7 测试名为 X的一个字节,如果 X的第 1,3 位均为 1,转移到 L1,如果只有一位为 1,转移到 L2,如果两位全为
2、0,转移到 L3。写出对应的指令序列。答:MOV AL,X AND AL,0000 1010B JZ L3 CMP AL,0000 1010B JE L1 JMP L2 4.12 计算分段函数:2653XXY 3322XXX X的值从键盘输入,Y的值送显示器输出。答:INCLUDE YLIB.H DATA SEGEMNT MESS1 DB 0DH,0AH,Input value of X please:$新编汇编语言程序设计四五章习题参考解答 2/29 MESS2 DB 0DH,0AH,Y=:$DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STAR
3、T:MOV AX,DATA MOV DS,AX LEA DX,MESS1 CALL READINT;输入 X的值 CMP AX,-2 JGE L2 L1:SUB AX,3 ;AXX-3 JMP DONE L2:CMP AX,3 JG L3 MOV BX,AX ADD AX,AX ;AX2X ADD AX,AX ;AX4X ADD AX,BX ;AX5X ADD AX,6 ;AX5X+6 JMP DONE L3:MOV AX,2 ;AX2 DONE:志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示
4、器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 3/29 LEA DX,MESS2 CALL WRITEINT;输出 Y的值 CALL CRLF MO
5、V AX,4C00H INT 21H CODE ENDS END START 4.14 编写程序,求 10 元素字数组 LIST 中绝对值最小的数,存入 MIN单元。答:DATA SEGEMNT LIST DW -56,+12,88,-126,-5,16,32,-99,72,-18 MIN DW?MINABS DW?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,LIST MOV MIN,AX ;将数组第一个元素假设为绝对值最小的数 MOV MINABS,32767;最小的绝对值假
6、设为 32767 LEA SI,LIST 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元
7、素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 4/29 MOV CX,10 AGAIN:MOV AX,SI CMP AX,0 JGE SKIP1 NEG AX ;求绝对值 SKIP1:CMP AX,MINABS ;绝对值与假设的最小绝对值比较 JGE SKIP2 ;假设的绝对值较小,跳过 MOV MINABS,AX ;保存新的最小绝对值 MOV AX,SI ;取出新的绝对值最小的数 MOV MIN,AX ;保留新的绝对值最小的数 SKIP2:ADD SI,2 LOOP AGAIN MOV AX,4C00H INT 21H CODE ENDS END S
8、TART 说明:一定要预设最小的绝对值和绝对值最小的数,而且这个绝对值最小的数必须来自 LIST数组。4.16 一个有符号字数组以 0 为结束标志,求这个数组的:最大值、最小值、平均值。答:DATA SEGEMNT LIST DW -56,+12,88,-126,-5,16,32,-99,72,-18,0 MIN DW?志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习
9、题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 5/29 MAX DW?AVG DW?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV MIN,32767 ;将 32767
10、假设为最小的数 MOV MAX,-32768 ;将-32768 假设为最大的数 MOV AVG,0 ;AVG 用作累加器,清零 LEA SI,LIST MOV CX,0 AGAIN:MOV AX,SI CMP AX,0 JZ DONE ;找到零元素,转 DONE 结束处理 INC CX ;纪录非零元素个数 ADD AVG,AX ;累加 CMP AX,MIN JGE SKIP1 MOV MIN.AX ;比预设最小值还小,保留 SKIP1:CMP AX,MAX JLE SKIP2 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分
11、段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 6/29 MOV MAX,AX ;比预设最大值还大,保留 SKIP2:A
12、DD SI,2 JMP AGAIN DONE:JCXZ NULL ;元素个数为零,转 NULL处理 MOV AX,AVG CWD IDIV CX MOV AVG,AX ;计算平均值 JMP EXIT NULL:MOV MIN,0 ;元素个数为 0,将“最大值”、“最小值”MOV MAX,0 ;“平均值”清零 MOV AVG,0 EXIT:MOV AX,4C00H INT 21H CODE ENDS END START 4.21 编写程序,把一个 30 个元素的有符号字数组 ARRAY 按照各元素的正负分别送入数组 P和 M,正数和零元素送 P 数组,负数送 M数组。答:DATA SEGEMNT
13、 ARRAY DW 30 DUP(?);汇编之前置入数据 P DW 30 DUP(?)志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数
14、用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 7/29 M DW 30 DUP(?)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA BX,ARRAY ;ARRAY 数组指针 MOV SI,0 ;P数组指针 MOV DI,0 ;M数组指针 MOV CX,30 ONE:MOV AX,BX ;从 ARRAY 数组取出一个数据 AND AX,AL JGE PLUS ;正数、零转 PLUS MINUS:MOV M
15、DI,AX ;负数存入 M数组 ADD DI,2 JMP NEXT PLUS:MOV PSI,AX ;正数、零存入 P数组 ADD SI,2 NEXT:ADD BX,2 LOOP ONE MOV AX,4C00H INT 21H 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的
16、绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 8/29 CODE ENDS END START 4.30 编写程序,输入 N,计算:S=1*2+2*3+(N-1)*N 答:INCLUDE YLIB.H CODE SEGMENT ASSUME CS:CODE MESS1 DB 0DH,0AH,Input N please:$MESS2 DB 0DH,0AH,S=$STA
17、RT:PUSH CS POP DS LEA DX,MESS1 CALL READDEC ;输入 N MOV CX,AX XOR BX,BX ;BX用作累加器 ONE:MOV AX,CX MOV SI,AX DEC SI MUL SI ;计算 J*(J-1)ADD BX,AX ;累加 LOOP ONE LEA DX,MESS2 MOV AX,BX 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新
18、编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 9/29 CALL WRITEDEC ;输出结果 CALL CRLF MOV AX,4C00H INT 21H CODE ENDS END START 4.31 编写程序,输入 N,输出如下矩阵(设 N=5
19、)1 1 1 1 1 2 2 2 2 1 3 3 3 2 1 4 4 3 2 1 5 4 3 2 1 答:设 I 为行(15),J 为列(15),则(I,J)位置上的数据为:I(6-J)?I:6-J。INCLUDE YLIB.H CODE SEGMENT ASSUME CS:CODE START:CALL CRLF MOV SI,1 ;SI 为行号 ROW:MOV CX,5 ;CX为 6-列号 COL:CMP SI,CX ;判断当前位置 JB UP 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显
20、示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 10/29 DOWN:MOV AX,CX ;下半三角,取 6-列号 JMP OUTPUT UP:MO
21、V AX,SI ;上半三角,取行号 OUTPUT:MOV DX,-1 CALL WRITEDEC ;输出一个数据 LOOP COL CALL CRLF ;结束本行 INC SI ;修改行号 CMP SI,5 JBE ROW ;未满 5 行,继续 MOV AX,4C00H INT 21H CODE ENDS END START 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四
22、五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 11/29 习题五 5.4 阅读下面的程序,指出该程序计划完成的功能,同时指出程序中尚存在的错误。CODE SEGMENT ASSUME:CS:CODE START:MOV CX,20 LOOP0:CALL PRINTSPAC
23、E LOOP LOOP0 MOV AH,4CH INT 21H PRINTSPACE PROC NEAR MOV CX,40 ;该行上面添加:PUSH CX PSLOOP:MOV AL,MOV AH,02H INT 21H LOOP PSLOOP MOV AL,0AH MOV AH,02H INT 21H MOV AL,0DH MOV AH,02H INT 21H ;该行下面添加:POP CX RET 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答
24、输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 12/29 PRINTSPACE ENDP CODE ENDS END START 功能:输出 20 行空行,每行有 40 个空格。5.6 阅读下面
25、的子程序,叙述它完成的功能,它的入口参数和出口参数各是什么?CLSCREEN PROC MOV AX,0600H MOV CX,0 MOV DH,X MOV DL,Y MOV BH,07H INT 10H RET CLSCREEN ENDP 解:屏幕窗口上卷,左上角为(0,0),右下角为(y,x),卷入行属性为黑底白字。5.7 编写程序,键入一个以$为结束符的数字串,统计其中“0”“9”各个数字出现的次数,分别存放到 S0S9 这 10 个 单元中去。解:.MODEL SMALL .DATA S0 DB 0 S1 DB?志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到
26、如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 13/29 S2 DB 0
27、S3 DB 0 S4 DB 0 S5 DB 0 S6 DB 0 S7 DB 0 S8 DB 0 S9 DB 0 KEYIN DB 100 DUP(0).CODE START:MOV AX,DATA MOV DS,AX MOV CX,0 LEA BX,KEYIN NEXT:MOV AH,01H INT 21H CMP AL,$JZ COUNT INC CX MOV BX,AL INC BX JMP NEXT COUNT:LEA BX,KEYIN 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输
28、出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 14/29 COUNT1:LEA DI,S0 MOV AL,BX SUB AL,30H MOV AH,0
29、ADD DI,AX INC BYTE PTRDI INC BX LOOP COUNT1 MOV AX,4C00H INT 21H END START 5.8 下面程序求某数据区中无符号数据最大值,观察程序执行中堆栈变化,画出以下 5 个堆栈状态图。(1)CALL MAX 指令执行之前(2)CALL MAX 指令执行之后。(3)保护现场之前(4)恢复现场之后(5)执行指令 POP SMAX 之后 程序清单如下:DATA SEGMENT BUF DW 98,34,897,345,678,21345,67,2 COUNT EQU($-BUF)/2 志位的状态分别是测试名为的一个字节如果的第位均为转移
30、到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 15/
31、29 SMAX DW?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA AX,BUF ;入口参数进栈 PUSH AX MOV AX,COUNT PUSH AX CALL MAX POP SMAX ;最大值出栈,送 SMAX MOV AH,4CH INT 21H MAX PROC PUSH BP MOV BP,SP MOV SI,BP+6 ;BUF 的偏移地址送 SI MOV CX,BP+4 ;COUNT送 CX MOV BX,SI ;取第一个数据至 BX DEC CX MAX1:ADD S
32、I,2 CMP BX,SI 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预
33、设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 16/29 JAE NEXT MOV AX,SI ;取第二个数至 AX NEXT:LOOP MAX1 MOV BP+6,BX ;最大值进栈 POP BP RET 2 ;返回后 SP指向最大值 MAX ENDP CODE ENDS END START SP COUNT BUF 的偏移地址 CALL MAX 执行之前 SP 返回偏移地址 COUNT BUF 的偏移地址 CALL MAX 执行之后 SP 返回偏移地址 COUNT BUF 的偏移地址 保护现场之前 BP SP 返回偏移地址 COUNT 最大值 恢复现场之后 BP
34、 返回偏移地址 COUNT SP 最大值 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元
35、素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 17/29 5.9 编写求绝对值的子程序,利用它计算三个变量的绝对值之和。解:.MODEL SMALL.DATA VALUE DW -5,5,-10 SUM DW 0.CODE START:MOV AX,DATA MOV DS,AX LEA BX,VALUE MOV CX,3 MOV SUM,0 ONE:CALL ABS ADD SUM,AX ADD BX,2 LOOP ONE MOV AX,4C00H INT 21H ;子程序 ABS ;功能:求一个字整数的绝对值 志位的状态分别是测试名为的一个字节如果的
36、第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考
37、解答 18/29 ;入口:字整数的偏移地址在 BX中 ;出口:该字整数的绝对值在 AX中 ABS PROC MOV SUM,0 AGAIN:MOV AX,BX AND AX,AX JGE SKIP NEG AX SKIP:RET ABS ENDP END START 5.10 子程序计算从 2 开始的 N(N=0)。其递归定义如下:志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序
38、设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 28/29 0!1 N!=N*(N-1)!(N0)解:.DATA N DW 5 M DD?.CODE START:MOV AX,DATA MOV DS,AX MOV CX,N CALL FACT MOV WORD PTR
39、 M,AX MOV WORD PTR M+2,DX MOV AX,4C00H INT 21H FACT PROC NEAR CMP CX,0 JZ DONE PUSH CX DEC CX CALL FACT POP CX MUL CX 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取
40、出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设新编汇编语言程序设计四五章习题参考解答 29/29 JMP EXIT DONE:MOV AX,1 EXIT:RET FACT ENDP END START 志位的状态分别是测试名为的一个字节如果的第位均为转移到如果只有一位为转移到如果两位全为转移到写出对应的指令序列答计算分段函数的值从键盘输入的值送显示器输出答新编汇编语言程序设计四五章习题参考解答输入的值第一个元素假设为绝对值最小的数最小的绝对值假设为新编汇编语言程序设计四五章习题参考解答求绝对值绝对值与假设的最小绝对值比较假设的绝对值较小跳过保存新的最小绝对值取出新的绝对值最小的数保留新的绝对值最小的结束标志求这个数组的最大值最小值平均值答新编汇编语言程序设计四五章习题参考解答将假设为最小的数将假设为最大的数用作累加器清零找到零元素转结束处理纪录非零元素个数累加比预设最小值还小保留新编汇编语言程序设