微机原理与接口技术1-8习题解答王玉良 下载本文

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字

;主程序

;内存区首地址入栈 ;数据块长度入栈 ;结果单元地址入栈 ;待搜索的关键字入栈 ;调用搜索子程序