NASM 汇编编程(四)实现换行(进阶)


上期实现了简单的换行,今天这期将用一个“函数”实现换行。
newline:                     ;显示回车换行
      mov ah,0eh
      mov al,0ah             ;0x0a=10对应换行符
      int 10h                ;输出
      mov al,0dh             ;0x0d=13对应回车符
      int 10h                ;输出
      ret

把这个“函数”写入文件中再调用。

DOS版

org 100h
jmp start
welcome: db HelloWorld,$
start:  mov   si, welcome
        call  printstr
        call  newline
        ret
printstr:
      mov al,[si]
      cmp al,$
      je discover
      mov ah,0eh
      int 10h
      inc si
      jmp printstr
discover:
      ret

newline:                     ;显示回车换行
      mov ah,0eh
      mov al,0ah             ;0x0a=10对应换行符
      int 10h                ;输出
      mov al,0dh             ;0x0d=13对应回车符
      int 10h                ;输出
      ret

映像版

org 7c00h
jmp start
welcome: db HelloWorld,$
start:  mov   ax, 0
        mov   ds, ax
        mov   si, welcome
        call  newline
        call  printstr
        ret
printstr:
      mov al,[si]
      cmp al,$
      je discover
      mov ah,0eh
      int 10h
      inc si
      jmp printstr
discover:
      ret

newline:                     ;显示回车换行
      mov ah,0eh
      mov al,0ah             ;0x0a=10对应换行符
      int 10h                ;输出
      mov al,0dh             ;0x0d=13对应回车符
      int 10h                ;输出
      ret

times 510-($$-$) db 0
                 db 0x55,0xaa
经验分享 程序员 微信小程序 职场和发展