cmp ax,0 jnz let1 pop si pop bx pop ax ret
calcu endp
24 写出两数相加运算的子程序。 25 写出两数相减运算的子程序。 26 写出两数相乘运算的子程序。 27 写出两数相除运算的子程序。
28 写出对AX中的二进制数按位相加子程序。 29 编写求数组中最大数的子程序。
30 编制一个计算数组中所有负数之和的子程序。并利用此子程序分别计算A数组和B数组中的负数之和,结果分别放在SUM1和SUM2单元中。 查看正确答案 DATA SEGMENT A DB 9,-8,-7,6,5 B DB -8,7,6,-5,4 SUM1 DB ? SUM2 DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,5
MOV SI,OFFSET A CALL LADD MOV SUM1,BL MOV SI,OFFSET B CALL LADD MOV SUM2,BL MOV AH,4CH INT 21H
LADD PROC NEAR PUSH CX
PUSH AX PUSH SI XOR BL,BL
NEXT: MOV AL, [SI] AND AL,AL JNS JJJ ADD BL,AL JJJ: INC SI LOOP NEXT POP SI POP AX POP CX RET
LADD ENDP CODE ENDS END START 习题八
1 宏的作用是什么?宏是一种程序结构吗? 2 分别解释宏定义、宏调用、宏展开。 3 宏与子程序的区别是什么?
4 宏指令是什么?它能被翻译成机器代码吗?
5 写出宏调用的过程和子程序调用的过程,并对二者做一对比。 6 宏是怎样实现传参的?请与子程序传参进行对比。 7 请举例说明宏的变元是操作数和变元是操作码的用法。 8 利用宏可以定义多个存储单元吗?如何定义? 9 在宏定义中可以使用标号吗?是否需要说明? 10 在宏定义中能否出现分支程序段? 11 如何建立宏库?怎样打开宏库? 12 结构伪操作的作用是什么?
13 请举例说明结构预置和结构引用的用法。
14 写出重复汇编和条件汇编的主要作用。它们可以生成机器代码吗? 15 编写多模块程序时,需要加入哪些参数设置? 16 分析下列宏定义,指出它的作用。 EXM1 MACRO X1 MOV AH,X1 INT 21H ENDM
查看正确答案
宏的作用:DOS功能调用。功能号用哑元指出。 17 解释下列宏的功能。 EXM2 MACRO A,B,C MOV AX,A ADD AX,B MOV C,AX ENDM 查看正确答案
宏的作用:两个操作数相加,结果保存在第3个数中。 18 指出下列宏的作用。 EXM3 MACRO C1 MOV AH,2 MOV DL,C1 INT 21H ENDM 查看正确答案
宏的作用:DOS的2号显示功能。 19 分析下列宏,指出它的作用。 EXM4 MACRO A1,A2 VALUE DW A1 DUP(A2) ENDM 查看正确答案
宏的作用:定义VALUE数组,数组长度和初值由哑元指出。
20 下列宏是一个分支程序,宏定义中缺少标号的处理。请添加,并指出宏的功能。 EXM5 MACRO B1,B2 MOV AL,B1 SUB AL,B2 JNS LETT1 NEG AL LETT1:RET ENDM 查看正确答案
缺少标号定义LOCAL LETT1。宏的作用:两个哑元相减,结果为负则求补。 21 定义宏。完成两个操作数相乘,乘积在第3个操作数中。 22 分别写出子程序使用的保护现场和恢复现场的宏。 23 定义键盘输入一个字符的宏指令INPUT。
24 定义显示一个字符的宏指令OUTPUT,要显示的字符用哑元DISP表示。 25 定义宏指令KEY_STR,实现从键盘输入一串字符。 26 定义宏指令DISPLAY,显示一串字符。
27 利用宏指令INPUT和OUTPUT实现将键入的大写字母变为小写显示。 查看正确答案 程序: .model small .stack 100h .code start:
input ;键盘输入
add al,20h ; 大写变为小写 output al ; 显示 mov ah,4ch int 21h end start
28 用宏指令DISPLAY显示存储单元ALPHA中的字符串?Computer?。 查看正确答案 程序: .model small .data
alpha db ?Computer? .code start:
display alpha ;显示字串 mov ah,4ch int 21h end start
29 编程序。在键盘输入时,调用宏指令INPUT。对输入的字符判断是否为负号“-”,是则对X求补,不是则继续输入。 查看正确答案 程序: .model small .stack 100h .code start:
input ;键盘输入
cmp al,?-? jnz start neg x ;求补 mov ah,4ch int 21h end start
30 编程序。键盘输入两个一位的十进制数,做加法运算。加法结果调整为非压缩的BCD码,并显示出十进制结果(4-8.asm)。要求改用调用宏INPUT和宏OUTPUT实现键盘输入和显示部分。 查看正确答案 程序: .model small .stack 100h .code start:
input ;键盘输入 mov bl,al
input ;输入第2个数 add al,bl mov ah,0
aaa ;非压缩BCD码加法调整 add ax,3030h output ah ;显示高位 output al ;显示低位 mov ah,4ch int 21h end start 习题九
1 软件中断都有哪些?CPU是如何处理的?
2 硬件中断发生时,CPU怎样获知?CPU如何处理硬件中断? 3 中断的重要性是什么?若没有中断系统,微机能否工作?
4 什么是中断向量?什么是中断向量表?80X86系统的中断向量表在哪儿? 5 80X86系统可以有多少个中断类型?中断类型号是如何划分的? 6 给出一个中断类型号,如何得到其中断向量?
7 每个中断类型都有一个中断处理程序吗?中断处理程序在那儿存放? 8 中断过程和子程序调用过程一样吗?有何异同? 9 中断返回指令和子程序返回指令作用一样吗?
10 子程序可以嵌套调用,中断可以嵌套吗?嵌套的条件是什么?