当前位置:首页 > IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明))
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
共分享92篇相关文档