汇编:显示字符串

前言

DOS功能调用
DOS利用软件中断方式提供系统功能。
中断调用指令是“INT N”,其中N表示调用的中断号、即中断0~中断255号。
DOS系统调用一般有如下4个步骤:
(1)在AH寄存器中设置系统功能调用号
(2)在指定寄存器中设置入口参数
(3)用中断调用指令(INT N)执行功能调用
(4)根据出口参数分析功能调用执行情况
DOS功能调用的中断号主要是21H,利用AH寄存器区别各个子功能。

子功能号功能入口参数出口参数
AH=01H从标准输入设备输入一个字符AL=输入字符的ASCII码
AH=02H向标准输出设备输出一个字符DL=字符的ASCII码
AH = 09H显示字符串DS:DX=缓冲区首址
AH = 4CH带返回码的结束AL=进程返回码

源代码

;显示字符串
    .model small
    .stack
    .data
msg db 'hello,Assembly!',13,10,'$';在dos需要利用'\r\n'使光标下一行首位置(回车换行)
    .code
    .startup
    mov dx,offset msg
    mov ah,9 ;//调用dos 9号功能号输出字符串,以$结束
    int 21h
    .exit
    end

利用库函数

;利用库函数显示字符串
    include io.inc
    .model small
    .stack
    .data
msg db 'hello,Assembly!',13,10,0;在dos需要利用'\r\n'使光标下一行首位置(回车换行)
    .code
    .startup
    mov ax,offset msg
    call dispmsg ; 利用库函数字符串的结束符为0
    .exit
    end

库函数实现

;自己实现函数显示字符串
    .model small
    .stack
    .data
msg db 'hello,Assembly!',13,10,0;在dos需要利用'\r\n'使光标下一行首位置(回车换行)
    .code
    .startup
    mov ax,offset msg
    call dispmsg ; 
    
    .exit
dispmsg proc ;定义过程
    ;设置入口参数,以0结束
    push ax
    push bx
    push dx ;保存寄存器的内容
    mov bx,ax
again:mov al,byte ptr [bx]
    Test al,al ;判断al是否为0
    jz ex
    mov ah,2
    mov dl,al
    int 21h
    inc bx
    jmp again
ex: pop dx
    pop bx
    pop ax
    ret
dispmsg endp;过程结束
    end
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值