当前位置:首页 > IBM_PC汇编语言程序的设计课后习题答案(第二版沈美明))
INPUT: MOV AH, 01 ;从键盘输入一个字符的功能调用
INT 21H
MOV [BX], AL
INC BX
CMP AL, ‘$’ ;是$结束符吗?
JNZ INPUT ;不是,继续输入
LEA BX, BUFF ;对非数字字符进行计数
NEXT: MOV CL, [BX]
INC BX
CMP CL, ‘$’ ;是$结束符,则转去显示
JZ DISP
CMP CL, 30H ;小于0是非数字字符
JB NEXT
CMP CL, 39H ;大于9是非数字字符
JA NEXT
INC COUNT ;个数+1
JMP NEXT
DISP: ┇ ;16进制数显示程序段(省略)
5.12 有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为0的项,并将后续项向前压缩,最后将数组的剩余部分补上0。
答:程序如下:
DSEG SEGMENT
MEM DW 100 DUP (?)
DSEG ENDS
;--------------------------------------------------------------------------
CSEG SEGMENT
MAIN PROC FAR
ASSUME CS: CSEG, DS: DSEG
START: PUSH DS ;设置返回DOS
SUB AX, AX
PUSH AX
MOV AX, DSEG
MOV DS, AX ;给DS赋值
BEGIN: MOV SI, (100-1)*2 ;(SI)指向MEM的末元素的首地址
MOV BX, -2 ;地址指针的初值
MOV CX, 100
COMP: ADD BX, 2
CMP MEM [BX], 0
JZ CONS
LOOP COMP
JMP FINISH ;比较完了,已无0则结束
CONS: MOV DI, BX
CONS1: CMP DI, SI ;到了最后单元码?
JAE NOMOV
MOV AX, MEM [DI+2] ;后面的元素向前移位
MOV MEM [DI], AX
ADD DI, 2
JMP CONS1
NOMOV: MOV WORD PTR [SI], 0 ;最后单元补0
LOOP COMP
FINISH: RET
MAIN ENDP
CSEG ENDS ;以上定义代码段
;--------------------------------------------------------------------------
END START
5.13 在STRING到STRING+99单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字,如有则把CL的第5位置1,否则将该位置0。
答:程序如下:
DSEG SEGMENT
STRING DB 100 DUP (?)
DSEG ENDS
;--------------------------------------------------------------------------
共分享92篇相关文档