汇编语言设计-实验二

1、用 INT 21H 的 1 号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。

DATAS SEGMENT
    ARR DB 300 DUP(0)
    NUM DW 0 
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    LEA SI,ARR
    
L1: MOV AH,01H
    INT 21H 
    CMP AL,0DH
    JE NEXT
    MOV [SI],AL
    INC SI
    INC NUM
    JMP L1
    
NEXT:
    MOV AH,02H
    MOV DL,0AH
    INT 21H
   
    MOV CX,NUM
    DEC SI
L2: MOV AH,02H
	MOV DL,[SI]
	INT 21H
	DEC SI
	LOOP L2
	
EXIT:
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

S1 SEGMENT
   NUM DW 12	
   STR1 DB 30 DUP(?) ;无STR的变量名
S1 ENDS

S2 SEGMENT STACK
   DW 60H DUP(?)
TOP LABEL WORD
S2 ENDS

S3 SEGMENT
   ASSUME CS:S3,DS:S1,SS:S2
MAIN PROC FAR 
   MOV AX,S2
   MOV SS,AX
   LEA SP,TOP
   MOV AX,S1
   MOV DS,AX
   
   MOV CX,NUM ;循环12次
   LEA SI,STR1
L1:
   PUSH CX
   MOV BX,[SI]
   CMP BX,0DH
   JE NEXT
   MOV AH,1
   INT 21H
   MOV [SI],AL
   INC SI
   POP CX
   LOOP L1

NEXT:
   MOV AH,02
   MOV DL,0AH
   INT 21H
   
   MOV CX,NUM
L2:PUSH CX
   DEC SI 
   MOV DL,[SI] 
   MOV AH,2 
   INT 21H
   POP CX
   LOOP L2   
   
MAIN ENDP                                                                                                                   
S3 ENDS 
   END MAIN


2、用 INT 21H 的 A 号功能,输入一个字符串“Hello, world!”,存放在内存,然后倒序输出。

S1 SEGMENT
   MAXL DB 30 ;最大长度
   RLEN DB ?  ;实际长度,在调用A号功能时候自动填充
   STR1 DB 30H DUP(?),0DH,0AH,'$' ;0AH号功能的初始化固定格式
S1 ENDS

S2 SEGMENT STACK
   DW 60H DUP(?) 
TOP LABEL WORD
S2 ENDS

S3 SEGMENT
   ASSUME CS:S3,DS:S1,SS:S2
MAIN PROC FAR 
   MOV AX,S2
   MOV SS,AX
   LEA SP,TOP 
   MOV AX,S1
   MOV DS,AX  

   MOV AH,0AH
   LEA DX,MAXL
   INT 21H
   
   ;换行输出
   MOV AH,02H
   MOV DL,0DH
   INT 21H
   MOV DL,0AH
   INT 21H
   
   ;倒序输出
   MOV CL,RLEN 
   XOR CH,CH 
   LEA SI,STR1 
   ADD SI,CX
   DEC SI ;SI--
L1:MOV DL,[SI]
   MOV AH,2
   INT 21H
   DEC SI
   LOOP L1
   
   ;结束
   MOV AH,4CH
   INT 21H
MAIN ENDP                                                                                                                  
S3 ENDS 
   END MAIN

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值