汇编语言程序设计期末总结

0x01. Hello, world

不解释,直接上代码

SSEG SEGMENT STACK
    DB 16 DUP(?)
SSEG ENDS
DSEG SEGMENT
    HELLO DB 'Hello, world!','$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:
    MOV AX, DSEG
    MOV DS, AX
    MOV AH, 09H             ;调用09H号功能,输出显示字符串
    LEA DX, HELLO
    INT 21H

    MOV AH, 4CH
    INT 21H

CSEG ENDS
END START

0x02. 字母大小写转换

题目:
编写程序,从键盘输入一个字符串,将其中的小写字母转换成大写后,再显示出来。

SSEG SEGMENT STACK
    DW 32 DUP(?)
SSEG ENDS
DSEG SEGMENT
    BUF DB 50,?,50 DUP(?)       ;定义字符串输入缓冲区,字符存储区最多50个字节
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:
    MOV AX,DSEG
    MOV DS,AX
    LEA DX,BUF              ;设置缓冲区首地址
    MOV AH,0AH              ;输入一个字符串,按回车键结束输入(光标回到当前行首)
    INT 21H
    LEA SI,BUF+2            ;取串首地址
    MOV CL,BUF+1            ;取串的实际长度
    MOV CH,0                ;CX作为循环计数器

LTOU:
    MOV AL,[SI]             ;从串中取出一个字符
    CMP AL,61H              ;判断是否为小写英文字母
    JB NEXT
    CMP AL, 7AH
    JA NEXT
    SUB AL, 20H             ;将小写英文字母转换为对应的大写英文字母
    MOV [SI], AL            ;将转换后的字符存回原处

NEXT:
    INC SI
    LOOP LTOU
    MOV BYTE PTR [SI], '$'  ;在串的尾部加上'$'字符,用于字符串显示
    MOV AH, 02H             ;调用02H号功能,输出一个换行符,使光标移到下一行
    MOV DL, 0AH
    INT 21H
    MOV AH, 09H             ;显示字符串
    LEA DX, BUF+2           ;设置串首地址
    INT 21H
    MOV AH, 4CH
    INT 21H

CSEG ENDS
END START

使用子程序实现

SSEG SEGMENT STACK
    DW 32 DUP(?)
SSEG ENDS
DSEG SEGMENT
    BUFF DB 50, ?, 50 DUP(?)              ;定义缓冲区
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG
START:
    MOV AX, D
  • 11
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值