(1)输入10字符串并且将他们显示出来
DATAS SEGMENT MESG DB 'input Character string',0dH,0ah,'$'BUF DB 20 ;这里的20为指定存放字符的个数(理论上的) DB ? ;这的?可变,实际存放字符的个数(系统自动计算) DB 20 DUP(?) ;这里的20是你在数据段开辟的空间 CRLF DB 0AH,0DH,'$'DATAS ENDSSTACKS SEGMENT DB 200 DUP(?)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AH,9H MOV DX,OFFSET MESG INT 21H ;这段功能的作用是输出字符串MESG MOV AH,10 ;10号中断,接收输入字符串,此时DX为存放字符串的有效地址 LEA DX,BUF INT 21H LEA DX,CRLF MOV AH,9 INT 21H ;这段功能是再一次输出换行回车 MOV AL,BUF+1 ;获取字符串中字符的个数 ADD AL,2 MOV AH,0 MOV SI,AX MOV BUF[SI],0H ;寄存器间接寻址 LEA DX,BUF+2 ;输出实际的字符串 MOV AH,9 INT 21H MOV AH,4CH INT 21HCODES ENDS END START(2)变形。 输入10个数并且将他们反向输出(利用了堆栈的先进先出的特点)
DATAS SEGMENT ;此处输入数据段代码 DATAS ENDSSTACK SEGMENT DW 50 DUP(?)STACK ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSTART: MOV AX,STACK MOV SS,AX MOV CX,10 L1: MOV AH,01H INT 21H PUSH AX LOOP L1 MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H MOV CX,10 L2: POP DX MOV AH,02H INT 21H LOOP L2 ;此处输入代码段代码 MOV AH,4CH INT 21HCODES ENDS END START新闻热点
疑难解答