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

发布时间 : 星期三 文章IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明))更新完毕开始阅读79d1f569ecfdc8d376eeaeaad1f34693dbef1000

DSEG SEGMENT

ENG DB ‘Here is sun, sun ,…,$’

DISP DB ‘SUN:’

DAT DB ‘0000’ , 0DH, 0AH, ‘$’

KEYWORD DB ‘sun’

DSEG ENDS

;--------------------------------------------------------------------------

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: MOV AX, 0

MOV DX, DISP-ENG-2 ;计算ENG的长度(每次比较sun,因此比较次数-2)

LEA BX, ENG

COMP: MOV DI, BX

LEA SI, KEYWORD

MOV CX, 3

REPE CMPSB ;串比较

JNZ NOMATCH

INC AX ;是,SUN的个数加1

ADD BX, 2

NOMATCH: INC BX ;指向ENG的下一个字母

DEC DX

JNZ COMP

DONE: MOV CH, 4 ;将次数转换为16进制数的ASCII码

MOV CL, 4

LEA BX, DAT ;转换结果存入DAT单元中

DONE1: ROL AX, CL

MOV DX, AX

AND DL, 0FH ;取一位16进制数

ADD DL, 30H

CMP DL, 39H

JLE STORE

ADD DL, 07H ;是“A~F”所以要加7

STORE: MOV [BX], DL ;转换结果存入DAT单元中

INC BX

DEC CH

JNZ DONE1

DISPLAY: LEA DX, DISP ;显示字符串程序(将DISP和DAT一起显示)

MOV AH, 09H

INT 21H

RET

MAIN ENDP

CSEG ENDS ;以上定义代码段

;--------------------------------------------------------------------------

END START

5.11 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。

答:程序段如下:

DSEG SEGMENT

BUFF DB 50 DUP (‘ ’)

COUNT DW 0

DSEG ENDS ┇

BEGIN: LEA BX, BUFF

MOV COUNT, 0