汇编语言实验课:第三次记录


前言

第三次汇编实验课实验内容是输入一个字符串再输出该字符串


一、编写程序

输入一个字符再输出该字符

DATAS SEGMENT
    BUFFER DB 20,?,20 DUP(?)
    ;此处输入数据段代码  
DATAS ENDS
	
STACKS SEGMENT
    DB 128 dup(?);此处输入堆栈段代码
    CRLF DB 0AH,0DH,'$'
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    ;字符串输入,缓冲区地址赋到DX
    LEA DX,BUFFER
    ;键盘输入到缓冲区
    MOV AH,0AH
    INT 21H
    
    ;0AH中断会保存在DX中的地址存放来自键盘的输入
    MOV AL,BUFFER+1;实际输入的字符个数
    ADD AL,2;字符的串首
    MOV AH,0
    MOV SI,AX
    MOV BUFFER[SI],'$'
    
    ;回车换行
    LEA DX,CRLF
    MOV AH,09H
    INT 21H
    
    ;字符串输出
    LEA DX,BUFFER+2
    MOV AH,09H
    INT 21H
    
    ;回车换行
    LEA DX,CRLF
    MOV AH,09H
    INT 21H
    
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START


二、程序解读

1.BUFFER

BUFFER DB 20,?,20 DUP(?)

预定义20字节的空间,待输入完成以后,自动获得输出的字符个数

2.CRLF

CRLF DB 0AH,0DH,'$'

此处的CRLF表示的是定义回车换行。

3.字符串输入

	;字符串输入,缓冲区地址赋到DX
    LEA DX,BUFFER
    ;键盘输入到缓冲区
    MOV AH,0AH
    INT 21H

此处表示的是将缓冲区BUFFER的地址赋值到DX,键盘输入的字符串存入到缓冲区。

4.字符串末尾加上‘$’

	;0AH中断会保存在DX中的地址存放来自键盘的输入
    MOV AL,BUFFER+1;实际输入的字符个数
    ADD AL,2;字符的串首
    MOV AH,0
    MOV SI,AX
    MOV BUFFER[SI],'$'

MOV AL,BUFFER+1 表示的是实际输入的字符个数
ADD AL,2 表示的是字符串的串首
这样就使得它的指向了BUFFER的最后一位,再最后一位加上字符串的结束标志‘$’

5.回车换行

    LEA DX,CRLF
    MOV AH,09H
    INT 21H

6.字符串输出

    LEA DX,BUFFER+2
    MOV AH,09H
    INT 21H

BUFFER+2表示的是字符串的串首
接着使用MOV AH,09H可以输出对应的字符


总结

有点难,但是还是在下课前做出来了。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值