题目
1、汇编语言[1]有何特点?编写汇编语言源程序[2]时,一般的组成原则是什么?4.2、.MODEL伪指令[3]是简化段定义源程序格式中必不可少的语句,它设计了哪几种存储模式,各用于创建什么性质的程序?4.3、如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?4.4、逻辑段具有哪些属性?完整代码段定义时的默认属性是什么?小型模式下的简化代码段定义具有的默认属性是什么?4.5、 DOS支持哪两种可执行程序[4]结构,编写这两种程序时需要注意什么?4.6、给出下列语句中,指令立即数(数值表达式)的值:(1)mov al,23h AND 45h OR 67h(2)mov ax,1234h/16+10h(3)mov ax,254h SHL 4(4)mov al,’a’ AND (NOT(‘b’一 ‘B’))(5)mov ax,(76543 LT 32768)XOR 7654h4.7、画图说明下列语句分配的存储空间及初始化的数据值:(1) byte_var db ‘BCD’,10,10h,’EF’,2 dup (一l,?,3 dup(4))(2) word_var dw 1234h,一5,6 dup(?)4.8、设置一个数据段,按照如下要求定义变量:(1)myl_b为字符串变量,表示字符串“Personal Computer!”(2)my2_b为用十六进制[5]数表示的字节变量,这个数的大小为100(3)my3_w为100个未赋值的字变量(4)my4_c为100的符号常量[6](5)my5_c为字符串常量,代替字符串“Personal Computer!”4.9、假设opw是一个字变量,opbl和opb2是两个字节变量,指出下列语句中的具体错误原因并改正错误。(1) mov byte ptr [bx],256(2) mov bx,offset opw[si](3) add opbl,opb2(4) mov opbl,al+l(5) sub al,opw(6) mov [di],1234h4.10、编制一个程序,把字变量X和Y中数值较大者存入MAX字单元;若两者相等,则把-1存入MAX中。假设变量存放的是有符号数。4.11、设变量DAT为有符号16位数,请编写程序将它的符号状态保存在sign字节单元,即:如果变量值大于等于0,保存0;如果变量值小于0,保存-1。4.12、 X、Y和Z是3个有符号字节数据,编写一个比较相等关系的程序:(1)如果这3个数都不相等,则显示N;(2)如果这3个数中有两个数相等,则显示X;(3)如果这3个数都相等,则显示Y。4.13、编制程序完成12H,23H,F3H,6AH,20H,FEH,10H,C8H,25H和34H共10个无符号字节数据之和,并将结果存入字变量SUM中。4.14、求出主存从2000H:0开始的一个64KB物理段中共有的空格个数,存入DX中。4.15、过程定义的一般格式是什么?子程序[7]开始为什么常有PUSH指令,返回前为什么有POP指令?下面完成16位无符号数累加的子程序是否正确?若有错,请改正。jiafa PROCpush axxor ax,axxor dx,dxagain: add ax, [bx]adc dx,0inc bxinc bxloop againretENDP jiafa、编写一个程序,统计寄存器[8]AX中二进制[9]数位“0”的个数,结果以二位十进制[10]数形式显示到屏幕上。、子程序的参数传递[11]有哪些方法?、编写一个求32位数据补码的子程序,通过寄存器传递入口参数。、所谓“校验和[12]”是指不记进位的累加,常用于检查信息的正确性。编写一个计算字节校验和的子程序。主程序提供入口参数:数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。、编制一个子程序,把一个16位二进制数用4位16进制形式在屏幕上显示出来。、在以BUF为首地址的字缓冲区中有3个无符号数,编程将这3个数按升序排列,结果存回原缓冲区。、在DAT字节单元中有一个有符号数,判断其正负,若为正数,则在屏幕上显示“+”号;若为负数,则显示“-”号;若是0,则显示0。、编程求1~400中所有奇数的和,结果以十六进制数形式显示到屏幕上。、在以DAT为首地址的字节缓冲区中存有100H个无符号字节数据,编程求其最大值与最小值之和,结果存入RESULT字单元。、在内存单元CNT中有一个字数据,编程将其二进制数显示到屏幕上。、在以STRG为首地址的缓冲区中有一组字符串,长度为100,编程实现将其中所有的英文小写字母转换成大写字母,其它的不变。、在以DAT为首地址的内存中有100个无符号数(数的长度为字),编程统计其中奇数的个数,结果以十进制形式显示到屏幕上。要求分别用子程序完成奇数个数统计,用宏完成十进制数显示。4.28、编写一段程序,使汇编程序[13]根据SIGN的值分别产生不同的指令。如果SIGN=0,则用字节变量DATB中的无符号数除以字节变量SCALE;如果SIGN=1,则用字节变量DATB中的有符号数除以字节变量SCALE,结果都存放在字节变量RESULT中。习题四 参考答案4.1答:汇编语言是计算机能够提供给用户使用的最快速有效的语言,它是以处理器指令系统为基础的低级程序设计语言[14],采用助记符表示指令操作码[15],采用标识符[16]表示指令操作数[17]。利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件[18],因而容易创建代码序列短小、运行快速的可执行程序。在对程序的空间和时间要求高的应用领域,汇编语言的作用是不容置疑和无可替代的。然而,汇编语言作为一种低级语言[19]也存在很多不足,例如,功能有限、编程难度大、依赖处理器指令,这也限制了它的应用范围。汇编语言源程序由若干语句组成,通常,这些语句可以分为3类,分别是:(1)指令语句;(2) 宏指令[20]语句;(3) 伪指令语句。汇编语言也由段组成,8086/8088按照逻辑段组织程序,具有代码段、数据段、附加段和堆栈段,段与段之间的顺序可以任意排列。需要独立运行的程序必须包含一个代码段,一个程序只有一个起始点,且必须指示程序的起始点。4.2答:七种存储模型:①Tiny 所有数据和代码都放在一个段内,其数据和代码都是近访问。Tiny程序可以写成.COM文件格式 ,COM程序必须从0100H的存储单元[21]开始。这种模型一般用于小程序。②Small 所有数据放在一个64KB的数据段内,所有代码放在另一个64KB的代码段内,数据和代码也都是近访问的。这是一般应用程序最常用的一种模型。③Medium 代码使用多个段,一般一个模块一个段,而数据则合并成一个64KB的段组。这样,数据是近访问的,而代码则可远访问。④Compact 所有代码都放在一个64KB的代码段内,数据则可放在多个段内,形成代码是近访问的,而数据则可为远访问的格式。⑤Large 代码和数据都可用多个段,所以数据和代码都可以远访问。⑥Huge 与Large模型相同,其差别是允许数据段的大小超过64KB。⑦Flat 允许用户用32位偏移量,但DOS下不允许使用这种模型,只能在OS/2下或其他保护模式的操作系统下使用。MASM 5版本不支持这种模型,但MASM 6可以支持。4.3答:需要使用一个标号[22],如start。对于有数据段的程序,简化段定义下应该这样开始:start:mov ax,@datamov ds,ax汇编语言程序设计过程中,有多种返回DOS的方法,但一般用DOS功能调用的4CH子功能来实现。应用程序的终止代码是:mov ax,4c00hint 21h汇编结束是指汇编程序结束将源程序翻译成目标模块代码的过程。源程序的最后必须有一条end伪指令:end [标号];其中,可选的标号是程序指定的开始执行点,连接程序[23]以此设置CS和IP。如:end start4.4答:逻辑段具有4个属性:(1)定位类型(align_type)说明段的起始地址应有怎样的边界值;(2)组合类型(combine_type)说明程序连接时的段合并方法;(3)使用类型(use_type)只适用于386及其后继机型,它用来指定寻址方式[24]。(4)类别(‘class’)在引号中给出连接时组成段组的类型名。完整代码段定义时的默认属性是:PARA、PRIVATE、USEl64.5答:COM和EXE程序结构。EXE程序有独立的代码段、数据段和堆栈段,还可以有多个代码段和多个数据段,程序长度可以超过64KB。COM程序只有一个逻辑段,其中包含数据区、代码区和堆栈区,程序代码长度不超过64KB,程序从100H处开始执行。4.6 答:(1)mov al,23h AND 45h OR 67h;67H(2)mov ax,1234h/16+10h;133H(3)mov ax,254h SHL 4;2540H(4)mov al,’a’ AND (NOT(‘b’- ‘B’));21H(5)mov ax,(76543 LT 32768)XOR 7654h;89ABH4.7.答:(1)42H43H44H0AH10H45H46HFFH-04H04H04HFFH-04H04H04H(2)34H12HFBHFFH------------4.8答:(1)myl_b db ‘Personal Computer!’(2)my2_b db 64H(3)my3_w dw 100 dup(?)(4)my4_c equ 100(5)my5_c equ 4.9答:(1) mov byte ptr [bx],256;改正――mov word ptr [bx],256(2) mov bx,offset opw[si];改正――mov bx,offset opw(3) add opbl,opb2;改正――add al,opb2(4) mov opbl,al+l;改正――mov opbl,al(5) sub al,opw;改正――sub al,opb1(6) mov [di],1234h;改正――mov word ptr [di],1234h4.10答:.MODEL SMALL.DATAX DW 1234HY DW 4321HMAX DW ?.CODESTART: MOV AX,@DATAMOV DS,AXMOV AX,XCMP AX,YJNZ NEQUMOV MAX,0FFFFHJMP STOPNEQU: JC NEXTMOV MAX,XJMP STOPNEXT: MOV MAX,YSTOP: MOV AX,4C00HINT 21HEND START4.11答:.MODEL SMALL.DATADAT DW 9234HSIGN DW ?.CODESTART: MOV AX,@DATAMOV DS,AXMOV AX,DATCMP AX,0JZ STOPTEST AX,8000HJNZ FUMOV SIGN,0JMP STOPFU: MOV SIGN,0FFHSTOP: MOV AX,4COOHINT 21HEND START4.12答:DISPLAY MACROMOV AH,2INT 21HENDM.MODEL SMALL.DATAX DW 1230HY DW 1234HZ DW 1234H.CODESTART: MOV AX,@DATAMOV DS,AXMOV AX,XMOV BX,YCMP AX,ZJNZ N1CMP AX,BXJNZ N2MOV DL,'Y'DISPLAYSTOP: MOV AX,4C00HINT 21HN1: CMP AX,BXJNZ N3N2: MOV DL,'X'DISPLAYJMP STOPN3: CMP BX,ZJNZ N4JMP N2N4: MOV DL,'N'DISPLAYJMP STOPEND START4.13答:.MODEL SMALL.DATADAT DB 12H,23H,0F3H,6AH,20H,0FEH,10H,C8H,25H,34HSUM DW ?.CODESTART: MOV AX,@DATAMOV DS,AXMOV CX,10MOV DX,0LEA BX,DATAGAIN: MOV AL,[BX]CBWMOV DX,AXINC BXLOOP AGAINMOV SUM,DXMOV AX,4C00HINT 21HEND START4.14答:.MODEL SMALL.CODESTART: MOV AX,2000HMOV DS,AXMOV SI,0MOV DX,0MOV CX,0FFFFHAGAIN: MOV AL,[SI]CMP AL,20HJNZ NEXTINC DXNEXT: INC SILOOP AGAINMOV AX,4C00HINT 21HEND START4.15. 答:procname PROC [attributes field][USES register list][,parameter field]┇Procname ENDPpush和pop的使用是为了保护子程序的调用的现场,比如寄存器的值。本例中要保护的寄存器是ax和dx。jiafa PROC;用CX,BX传参数――数据的个数和数据的起始地址,结果放在字内存单元SUM和SUM+1push axpush dxxor ax,axxor dx,dxagain: add ax, [bx]adc dx,0inc bxinc bxloop againmov sum,axmov [sum+1],dxpop dxpop axretjiafa ENDP
1、汇编语言[1]有何特点?编写汇编语言源程序[2]时,一般的组成原则是什么?4.2、.MODEL伪指令[3]是简化段定义源程序格式中必不可少的语句,它设计了哪几种存储模式,各用于创建什么性质的程序?4.3、如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?4.4、逻辑段具有哪些属性?完整代码段定义时的默认属性是什么?小型模式下的简化代码段定义具有的默认属性是什么?4.5、 DOS支持哪两种可执行程序[4]结构,编写这两种程序时需要注意什么?4.6、给出下列语句中,指令立即数(数值表达式)的值:(1)mov al,23h AND 45h OR 67h(2)mov ax,1234h/16+10h(3)mov ax,254h SHL 4(4)mov al,’a’ AND (NOT(‘b’一 ‘B’))(5)mov ax,(76543 LT 32768)XOR 7654h4.7、画图说明下列语句分配的存储空间及初始化的数据值:(1) byte_var db ‘BCD’,10,10h,’EF’,2 dup (一l,?,3 dup(4))(2) word_var dw 1234h,一5,6 dup(?)4.8、设置一个数据段,按照如下要求定义变量:(1)myl_b为字符串变量,表示字符串“Personal Computer!”(2)my2_b为用十六进制[5]数表示的字节变量,这个数的大小为100(3)my3_w为100个未赋值的字变量(4)my4_c为100的符号常量[6](5)my5_c为字符串常量,代替字符串“Personal Computer!”4.9、假设opw是一个字变量,opbl和opb2是两个字节变量,指出下列语句中的具体错误原因并改正错误。(1) mov byte ptr [bx],256(2) mov bx,offset opw[si](3) add opbl,opb2(4) mov opbl,al+l(5) sub al,opw(6) mov [di],1234h4.10、编制一个程序,把字变量X和Y中数值较大者存入MAX字单元;若两者相等,则把-1存入MAX中。假设变量存放的是有符号数。4.11、设变量DAT为有符号16位数,请编写程序将它的符号状态保存在sign字节单元,即:如果变量值大于等于0,保存0;如果变量值小于0,保存-1。4.12、 X、Y和Z是3个有符号字节数据,编写一个比较相等关系的程序:(1)如果这3个数都不相等,则显示N;(2)如果这3个数中有两个数相等,则显示X;(3)如果这3个数都相等,则显示Y。4.13、编制程序完成12H,23H,F3H,6AH,20H,FEH,10H,C8H,25H和34H共10个无符号字节数据之和,并将结果存入字变量SUM中。4.14、求出主存从2000H:0开始的一个64KB物理段中共有的空格个数,存入DX中。4.15、过程定义的一般格式是什么?子程序[7]开始为什么常有PUSH指令,返回前为什么有POP指令?下面完成16位无符号数累加的子程序是否正确?若有错,请改正。jiafa PROCpush axxor ax,axxor dx,dxagain: add ax, [bx]adc dx,0inc bxinc bxloop againretENDP jiafa、编写一个程序,统计寄存器[8]AX中二进制[9]数位“0”的个数,结果以二位十进制[10]数形式显示到屏幕上。、子程序的参数传递[11]有哪些方法?、编写一个求32位数据补码的子程序,通过寄存器传递入口参数。、所谓“校验和[12]”是指不记进位的累加,常用于检查信息的正确性。编写一个计算字节校验和的子程序。主程序提供入口参数:数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。、编制一个子程序,把一个16位二进制数用4位16进制形式在屏幕上显示出来。、在以BUF为首地址的字缓冲区中有3个无符号数,编程将这3个数按升序排列,结果存回原缓冲区。、在DAT字节单元中有一个有符号数,判断其正负,若为正数,则在屏幕上显示“+”号;若为负数,则显示“-”号;若是0,则显示0。、编程求1~400中所有奇数的和,结果以十六进制数形式显示到屏幕上。、在以DAT为首地址的字节缓冲区中存有100H个无符号字节数据,编程求其最大值与最小值之和,结果存入RESULT字单元。、在内存单元CNT中有一个字数据,编程将其二进制数显示到屏幕上。、在以STRG为首地址的缓冲区中有一组字符串,长度为100,编程实现将其中所有的英文小写字母转换成大写字母,其它的不变。、在以DAT为首地址的内存中有100个无符号数(数的长度为字),编程统计其中奇数的个数,结果以十进制形式显示到屏幕上。要求分别用子程序完成奇数个数统计,用宏完成十进制数显示。4.28、编写一段程序,使汇编程序[13]根据SIGN的值分别产生不同的指令。如果SIGN=0,则用字节变量DATB中的无符号数除以字节变量SCALE;如果SIGN=1,则用字节变量DATB中的有符号数除以字节变量SCALE,结果都存放在字节变量RESULT中。习题四 参考答案4.1答:汇编语言是计算机能够提供给用户使用的最快速有效的语言,它是以处理器指令系统为基础的低级程序设计语言[14],采用助记符表示指令操作码[15],采用标识符[16]表示指令操作数[17]。利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件[18],因而容易创建代码序列短小、运行快速的可执行程序。在对程序的空间和时间要求高的应用领域,汇编语言的作用是不容置疑和无可替代的。然而,汇编语言作为一种低级语言[19]也存在很多不足,例如,功能有限、编程难度大、依赖处理器指令,这也限制了它的应用范围。汇编语言源程序由若干语句组成,通常,这些语句可以分为3类,分别是:(1)指令语句;(2) 宏指令[20]语句;(3) 伪指令语句。汇编语言也由段组成,8086/8088按照逻辑段组织程序,具有代码段、数据段、附加段和堆栈段,段与段之间的顺序可以任意排列。需要独立运行的程序必须包含一个代码段,一个程序只有一个起始点,且必须指示程序的起始点。4.2答:七种存储模型:①Tiny 所有数据和代码都放在一个段内,其数据和代码都是近访问。Tiny程序可以写成.COM文件格式 ,COM程序必须从0100H的存储单元[21]开始。这种模型一般用于小程序。②Small 所有数据放在一个64KB的数据段内,所有代码放在另一个64KB的代码段内,数据和代码也都是近访问的。这是一般应用程序最常用的一种模型。③Medium 代码使用多个段,一般一个模块一个段,而数据则合并成一个64KB的段组。这样,数据是近访问的,而代码则可远访问。④Compact 所有代码都放在一个64KB的代码段内,数据则可放在多个段内,形成代码是近访问的,而数据则可为远访问的格式。⑤Large 代码和数据都可用多个段,所以数据和代码都可以远访问。⑥Huge 与Large模型相同,其差别是允许数据段的大小超过64KB。⑦Flat 允许用户用32位偏移量,但DOS下不允许使用这种模型,只能在OS/2下或其他保护模式的操作系统下使用。MASM 5版本不支持这种模型,但MASM 6可以支持。4.3答:需要使用一个标号[22],如start。对于有数据段的程序,简化段定义下应该这样开始:start:mov ax,@datamov ds,ax汇编语言程序设计过程中,有多种返回DOS的方法,但一般用DOS功能调用的4CH子功能来实现。应用程序的终止代码是:mov ax,4c00hint 21h汇编结束是指汇编程序结束将源程序翻译成目标模块代码的过程。源程序的最后必须有一条end伪指令:end [标号];其中,可选的标号是程序指定的开始执行点,连接程序[23]以此设置CS和IP。如:end start4.4答:逻辑段具有4个属性:(1)定位类型(align_type)说明段的起始地址应有怎样的边界值;(2)组合类型(combine_type)说明程序连接时的段合并方法;(3)使用类型(use_type)只适用于386及其后继机型,它用来指定寻址方式[24]。(4)类别(‘class’)在引号中给出连接时组成段组的类型名。完整代码段定义时的默认属性是:PARA、PRIVATE、USEl64.5答:COM和EXE程序结构。EXE程序有独立的代码段、数据段和堆栈段,还可以有多个代码段和多个数据段,程序长度可以超过64KB。COM程序只有一个逻辑段,其中包含数据区、代码区和堆栈区,程序代码长度不超过64KB,程序从100H处开始执行。4.6 答:(1)mov al,23h AND 45h OR 67h;67H(2)mov ax,1234h/16+10h;133H(3)mov ax,254h SHL 4;2540H(4)mov al,’a’ AND (NOT(‘b’- ‘B’));21H(5)mov ax,(76543 LT 32768)XOR 7654h;89ABH4.7.答:(1)42H43H44H0AH10H45H46HFFH-04H04H04HFFH-04H04H04H(2)34H12HFBHFFH------------4.8答:(1)myl_b db ‘Personal Computer!’(2)my2_b db 64H(3)my3_w dw 100 dup(?)(4)my4_c equ 100(5)my5_c equ 4.9答:(1) mov byte ptr [bx],256;改正――mov word ptr [bx],256(2) mov bx,offset opw[si];改正――mov bx,offset opw(3) add opbl,opb2;改正――add al,opb2(4) mov opbl,al+l;改正――mov opbl,al(5) sub al,opw;改正――sub al,opb1(6) mov [di],1234h;改正――mov word ptr [di],1234h4.10答:.MODEL SMALL.DATAX DW 1234HY DW 4321HMAX DW ?.CODESTART: MOV AX,@DATAMOV DS,AXMOV AX,XCMP AX,YJNZ NEQUMOV MAX,0FFFFHJMP STOPNEQU: JC NEXTMOV MAX,XJMP STOPNEXT: MOV MAX,YSTOP: MOV AX,4C00HINT 21HEND START4.11答:.MODEL SMALL.DATADAT DW 9234HSIGN DW ?.CODESTART: MOV AX,@DATAMOV DS,AXMOV AX,DATCMP AX,0JZ STOPTEST AX,8000HJNZ FUMOV SIGN,0JMP STOPFU: MOV SIGN,0FFHSTOP: MOV AX,4COOHINT 21HEND START4.12答:DISPLAY MACROMOV AH,2INT 21HENDM.MODEL SMALL.DATAX DW 1230HY DW 1234HZ DW 1234H.CODESTART: MOV AX,@DATAMOV DS,AXMOV AX,XMOV BX,YCMP AX,ZJNZ N1CMP AX,BXJNZ N2MOV DL,'Y'DISPLAYSTOP: MOV AX,4C00HINT 21HN1: CMP AX,BXJNZ N3N2: MOV DL,'X'DISPLAYJMP STOPN3: CMP BX,ZJNZ N4JMP N2N4: MOV DL,'N'DISPLAYJMP STOPEND START4.13答:.MODEL SMALL.DATADAT DB 12H,23H,0F3H,6AH,20H,0FEH,10H,C8H,25H,34HSUM DW ?.CODESTART: MOV AX,@DATAMOV DS,AXMOV CX,10MOV DX,0LEA BX,DATAGAIN: MOV AL,[BX]CBWMOV DX,AXINC BXLOOP AGAINMOV SUM,DXMOV AX,4C00HINT 21HEND START4.14答:.MODEL SMALL.CODESTART: MOV AX,2000HMOV DS,AXMOV SI,0MOV DX,0MOV CX,0FFFFHAGAIN: MOV AL,[SI]CMP AL,20HJNZ NEXTINC DXNEXT: INC SILOOP AGAINMOV AX,4C00HINT 21HEND START4.15. 答:procname PROC [attributes field][USES register list][,parameter field]┇Procname ENDPpush和pop的使用是为了保护子程序的调用的现场,比如寄存器的值。本例中要保护的寄存器是ax和dx。jiafa PROC;用CX,BX传参数――数据的个数和数据的起始地址,结果放在字内存单元SUM和SUM+1push axpush dxxor ax,axxor dx,dxagain: add ax, [bx]adc dx,0inc bxinc bxloop againmov sum,axmov [sum+1],dxpop dxpop axretjiafa ENDP
题目解答
答案
答:.MODEL SMALL.CODESTART: MOV CX,16MOV BL,0;BL中放0的个数AGN: SHL AX,1;数0的个数JC NEXTINC BLNEXT: LOOP AGNMOV AL,BLDAAMOV DL,AL;显示高位AND DL,0F0HMOV CL,4SHR DL,CLADD DL,30HMOV AH,2INT 21HMOV DL,AL;显示低位AND DL,0FHADD DL,30HMOV AH,2INT 21HMOV DL,0DH;显示回车MOV AH,2INT 21HMOV DL,0AH;显示换行MOV AH,2INT 21HMOV AX,4C00HINT 21HEND START.答:1、用寄存器传参数。2、用共享变量传参数。3、用堆栈传参数。.答:设这个32位数放在DX.AX中,求补后的结果也放在DX.AX中。BUMA PROCPUSH BXPUSH CXXOR BX,BXXOR CX,CXSUB BX,AXMOV AX,BXSBB CX,DXMOV DX,CXPOP CXPOP BXRETBUMA ENDP答:设数据个数在CX中,数据缓冲区的首地址为BUF。出口参数:校验和放在SUM字节单元。CHKSUM PROCPUSH AXPUSH BXDEC CXLEA BX,BUFMOV AL,[BX]AGN: ADD AL,[BX]INC BXLOOP AGNMOV SUM,ALPOP BXPOP AXRETCHKSUM ENDP答:设这个十六进制的字放在数据段的TEMP字单元中。BTOH PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV CL,4MOV BX,TEMPMOV DL,BH;最高位SHR DL,CLCMP DL,0AHJC N1ADD DL,7N1: ADD DL,30HMOV AH,2INT 21HMOV DL,BH;次高位AND DL,0FHCMP DL,0AHJC N2ADD DL,7N2: ADD DL,30HMOV AH,2INT 21HMOV DL,BL;次低位SHR DL,CLCMP DL,0AHJC N3ADD DL,7N3: ADD DL,30HMOV AH,2INT 21HMOV DL,BL;最低位AND DL,0FHCMP DL,0AHJC N4ADD DL,7N4: ADD DL,30HMOV AH,2INT 21HPOP DXPOP CXPOP BXPOP AXRETBTOH ENDP答:.MODEL SMALL.DATABUF DW 9273H,0F3H,6A20H.CODESTART: MOV AX,@DATAMOV DS,AXLEA BX,BUFMOV AX,[BX]CMP AX,[BX+2]JB N1XCHG AX,[BX+2]MOV [BX], AXN1: MOV AX,[BX+2]CMP AX,[BX+4]JB N2XCHG AX,[BX+4]MOV [BX+2],AXN2: MOV AX,[BX]CMP AX,[BX+2]JB STOPXCHG AX,[BX+2]MOV [BX], AXSTOP: ;INT 3MOV AX,4C00HINT 21HEND START答:DISPLAY MACROMOV AH,2INT 21HENDM.MODEL SMALL.DATADAT DB 9CH.CODESTART: MOV AX,@DATAMOV DS,AXMOV AL,DATCMP AL,0JZ ZEROJNS POSIMOV DL,’-’DISPLAYSTOP: MOV AX,4C00HINT 21HZERO: MOV DL,’0’DISPLAYJMP STOPPOSI: MOV DL,’+’DISPLAYJMP STOPEND START答:1.7 答:传统上分为三类:大型主机、小型机、微型机。大型主机一般为高性能的并行处理[25]系统, 存储容量[26]大,事物处理能力强,可为众多用户提供服务。小型机具有一定的数据处理[27]能力,提供一定用户规模的信息服务,作为部门的信息服务中心。微型机一般指在办公室或家庭的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系结构,兼容性好。1.8 答:微处理器[28]是微计算机系统的核心硬件部件,对系统的性能起决定性的影响。微计算机包括微处理器、存储器[29]、I/O接口电路[30]及系统总线。微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。1.9 答:从体系结构上可分为5代:4004:4位机;8080/8085:8位机;8086/8088/80286:16位机;80386/80486:32位机;Pentium系列机:64位。