当前位置:首页 > IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明))
;--------------------------------------------------------------------------
CSEG SEGMENT
MAIN PROC FAR
ASSUME CS: CSEG, DS: DSEG, ES: DSEG
START: PUSH DS ;设置返回DOS
SUB AX, AX
PUSH AX
MOV AX, DSEG
MOV DS, AX ;给DS赋值
MOV ES, AX ;给ES赋值
;
BEGIN: LEA SI, STRING1 ;设置串比较指令的初值
LEA DI, STRING2
CLD
MOV CX, STRING2 - STRING1
REPE CMPSB ;串比较
JNE DISPNO
LEA DX, YES ;显示MATCH
JMP DISPLAY
DISPNO: LEA DX, NO ;显示NO MATCH
DISPLAY: MOV AH, 9 ;显示一个字符串的DOS调用
INT 21H
RET
MAIN ENDP
CSEG ENDS ;以上定义代码段
;--------------------------------------------------------------------------
END START
5.5 试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07)。
答:程序段如下:
BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用
INT 21H
SUB AL, ‘0’
JB STOP ;输入字符<‘0’吗?
CMP AL, 9 ;输入字符>‘9’吗?
JA STOP
CBW
MOV CX, AX ;响铃次数N
JCXZ STOP
BELL: MOV DL, 07H ;准备响铃
MOV AH, 2 ;显示一个字符的DOS调用,实际为响铃
INT 21H
CALL DELAY100ms ;延时100ms
LOOP BELL
STOP: RET
5.6 编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。
答:程序如下:
DSEG SEGMENT
COUNT EQU 20
ARRAY DW 20 DUP (?) ;存放数组
COUNT1 DB 0 ;存放正数的个数
ARRAY1 DW 20 DUP (?) ;存放正数
COUNT2 DB 0 ;存放负数的个数
ARRAY2 DW 20 DUP (?) ;存放负数
ZHEN DB 0DH, 0AH, ‘The positive number is:’, ‘$’ ;正数的个数是:
FU DB 0DH, 0AH, ‘The negative number is:’, ‘$’ ;负数的个数是:
CRLF DB 0DH, 0AH, ‘$’
DSEG ENDS
;--------------------------------------------------------------------------
CSEG SEGMENT
MAIN PROC FAR
共分享92篇相关文档