IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明)) 联系客服

发布时间 : 星期六 文章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