试题详情
- 简答题设计一个程序:其功能是对被测试字中1的个数进行计数。本例作为子程序设计的一个例子,是程序与子程序不在一个代码段,和调用程序与子程序在一个代码段这两种情况都具备的应用实例,也是一个子程序嵌套结构的实例。
-
;源模块 1
PUBIC TWORD ,MASKS ;可供外部使用的公共变量及数据
EXTRN WCNTIS :FAR,OPSYS:FAR ;用到的外部子程序及外部过程
STACK SEGMENT STACK ;堆栈段
DW 32 DUP(?) ;堆栈区
STKE LABEL WORD
STACK ENDS
MAIND SEGMENT ;数据段
MASKS DB 80H ,40H,20H,10H,08H,04H,02H,01H;测试用的屏蔽字
TWORD DW 27A9H ;被测试数
MAIND ENDS
MAINC SEGMENT PUBIC ;主程序码段
MCS:MAINC ,DS:MAIND ,SS:STACK,ES:MAIND 。
MAIN : MOV AX ,STACK ;堆栈段寄存器初始化
MOV SS,AX
MOV SP,OFFSET STKE ;堆栈格外初始化
MOV AX ,MAIND ;数据段初始化
MOV DS,AX
MOV ES,AX ;附加段初始他
CALL FAR PTR WCNTIS ;调用计算 1 个数的外部子程序
CALL FAR PTR OPSYS ;调用返回报作系统的外部过程
MAINC ENDS
END MAIN
;原模块 2
;子程序目的: WCNT 是计等一个字中 1 的个数
;出 口:AX 中放该字的 1 的个数
;所门用于程序: 调用 2 次计等一个字节中 1 个数的手程序 WCNTIS.调用前将
阿 AX 中数分为高低两字节
PUBIC WCNTIS ;可供外部使用的干程序
EXTRN TWORD :WORD,MASKS :BYTE ;用到的外都变量及数据
M SEGMENT PARA STACK ‘STACK’
DB 20 DUP(?)
CNTSEG SEGMENT PUBLIN ;子程序码段
ASSUME CS:CNTSEG,SS:STACK;这里 CS 被赋予新值
WCNTIS PROC FAR ;子程序 WCNTIS 开始
MOV AX ,TWORD ;取入被测试数
CALL NEAR PTR BCNTIS ;计算 AL 中 1 的个数,结果在 CX 中
PUSH CX ;1 的个数人栈
M0V AL ,AH
CALL NEAR PTR BCNTS ;计算 AH 中 1 的个数
POP AX ;取出低字节 1 个数
ADD AX ,CX ;加上高字节 1 个数
RET ;返回
WCNIS ENDP ;子程序 WCNIS 结束
BCNTIS PROC NEAR ;子程序 BCNTIS 开始
;子程序目的:计算字节中 1 的个数
;人口:字节数在 AL 中
;出口: 1 的个数在 CX 中
MOV CX ,0 ;初始化
MOV SI,0 ;第一个选位字节的变址
BL00P:TEST AL,MASKS[SI] ;测试 1 位
JZ BNEXT ;为零,转移
INC CL ;为 1,计数加 1
BNEXT: INC SI ;指向下一位
CMP SI,8 ;测试完?
JNE BL00P ;否,继续
RET ;是,返回
BCNIS ENDP
CNG ENDS
END
;源模块 3
PUBIC OPSYS ;可供外部使用的公共过程
CODE SEGMENT PUBIC
ASSUME CS:CODE
OPSYS PROC FAR
MOV AH ,4CH ;返回 DOS
INT 21H
RET
OPSY END
CODE ENDS
END
被测试字 TWORD 被取入 AX 中,主程序 MAIN 调用于程序 WCNTIS 以计数 AX中 1 的个数 WCNTIS 又调用于程序 BCNTIS 两次, BCNIS 为计数字节中 1 个数的子程序,最后结果在 CX 中。 关注下方微信公众号,在线模考后查看
热门试题
- 8088CPU访问I/O接口使用A0~A
- CPU中,运算器的主要功能是()
- IDE接口实际上是对ISA总线I/O通道
- 编写计算下列公式的程序段:
- 8086/8088CPU的内部结构由()
- 半导体存储器的主要性能指标:()。
- USB系统中数据传输采用什么编码?简要说
- 假设(AL)=0FFH,依次执行ADD
- 在计算机系统的层次结构中,汇编语言位于第
- 8086 CPU只在()时,才执行总线周
- 执行下列程序段中第一条指令后, (1)
- 1片8259A能管理多少级中断?
- 半导体存储器从使用功能上来说,可分为两类
- (27)设字变量单元A、B、C存放有三个
- 主机与外设传送数据时,采用什么方式,CP
- 在ES段的偏移1000H开始处存有10个
- MOS型半导体随机存储器可分为哪两种?
- 溢出标志OF和进位标志CF有什么不同?
- 当计算机进入DMA方式传送数据时,CPU
- 若将一十六进制数取反,应使该数与0FFF