【SCAU汇编】实验二

1.编写一个程序,使用 INT 21H 2 号功能,实现“Hello, world!”的显示。

DATAS SEGMENT
    STRING DB 'HELLO WORLD!',0DH,0AH
    ;ODH,0AH为回车,换行
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
MAIN PROC MAIN
    MOV AX,DATAS
    MOV DS,AX
    LEA SI,STRING
L1:
    MOV DX,[SI]
    MOV AH,2
    INT 21H
    INC SI
    CMP DL,0AH
    JNE L1
    
    MOV AH,4CH
    INT 21H
MAIN ENDP
CODES ENDS
    END MAIN

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

STACKS SEGMENT
    DW 30H DUP(0)
    TOP LABEL WORD
STACKS ENDS
;DATAS SEGMENT
   ;COUNT DB 0
;DATAS ENDS

CODES SEGMENT
      ASSUME CS:CODES,SS:STACKS;,DS:DATAS
MAIN PROC FAR
     ;MOV AX,DATAS
    ; MOV DS,AX
     MOV AX,STACKS
     MOV SS,AX
     LEA SP,TOP
     LEA SI,TOP
L1:  MOV AH,1
     INT 21H
     CMP AL,0DH
     JE L2
     PUSH AX
     ;INC COUNT
     JMP L1
L2:  POP DX
     MOV AH,2
     INT 21H
     ;DEC COUNT
     ;MOV CL,COUNT
     ;CMP CL,0
     CMP SP,SI
     JNE L2
     
     MOV AH,4CH
     INT 21H
MAIN ENDP
CODES ENDS
      END MAIN

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

CODES SEGMENT
      ASSUME CS:CODES
MAIN PROC FAR 
     MOV AH,0AH
     INT 21H
     MOV SI,DX
     MOV AL,DS:[SI+1];存放的实际输入字符数只放了一个字节所以需要扩展
     CBW
     ADD SI,2
     MOV DI,SI;将输入的第一个字符'h'的地址存放在di中
     DEC DI;*
     ADD SI,AX
     SUB AX,AX;因为要倒序输出所以需要将最后一个字符的地址存进去

L1:  
     MOV DL,DS:[SI]
     DEC SI
     MOV AH,2
     INT 21H
     CMP SI,DI;*因为先减再比较,所以di要从自减开始
     JNE L1
     
     MOV AH,4CH
     INT 21H
MAIN ENDP
CODES ENDS
      END MAIN

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bluefeast

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值