汇编输入字符串常见的实验题

来源:互联网 发布:淘宝考试女士内衣 编辑:程序博客网 时间:2024/05/22 14:18

(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  
0 0
原创粉丝点击