ADD SI,2 MOV BX,[SI] CMP AX,BX JL ZCL1 STD JMP STOP ZCL1: CLI
STOP: MOV AH,4CH
INT 21H
CODE ENDS
2l.编一程序,把键入的十六进制数转换成十进制数并在屏幕上显示出来。键入的最大数为FFFFH,若键入的不是十六进制数字,则显示出错提示。 解 参看例4.16
26.编一子程序,在指定的内存区域中搜索指定的字节,如找到,则返回该字节的位置,否则返回-1。要求使用堆栈传递参数,同时提供子程序清单。要求同时提供一个测试用的主程序,以使所有程序可以运行和验证。
解:
DATA SEGMENT
BUF DB 01H, 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H
;数据块
END START
COUNT EQU $-BUF
;块长度
KEYB DB 05H ADDRR DW ? DATA ENDS
;搜索的字节值
;存放结果单元
STACK SEGMENT STACK 符
STACK CODE START: DB 10 DUP ('STACK')
ENDS SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK MOV AX, DATA
MOV DS, AX LEA SI, BUF MOV CX, COUNT LEA DI,ADDRR MOV AL,KEYB PUSH SI
PUSH CX PUSH DI PUSH AX CALL FINDK
MOV AH, 4CH
;堆栈区,填充STACK字
;主程序
;内存区首地址入栈 ;数据块长度入栈 ;结果单元地址入栈 ;待搜索的关键字入栈 ;调用搜索子程序