首页 > 编程语言 >【汇编】多种方法实现清屏并打印字符串(.asm源码)

【汇编】多种方法实现清屏并打印字符串(.asm源码)

时间:2022-10-17 23:34:06浏览次数:41  
标签:并打印 mov 源码 es byte 0x0c bx asm inc


项目环境
  • 编译环境:搭建一个nasm2.8的编译环境。
  • 镜像文件:采用winhex_18.2刷入编码。
  • 虚拟机:采用Bochs-2.4.5
项目软件
  • 傻瓜式环境配置。
  • 解压文件到D盘能直接使用。
运行结果

【汇编】多种方法实现清屏并打印字符串(.asm源码)_环境配置

程序源码-方法一(.asm)
org 0x7c00

jmp start
string db 'world',0
passwrod db "23456",0


start:
mov ax,0xb800
mov es,ax
mov bx , 0x0000
mov ax , 0

mov si , 0x7c03

mov cx , 0x0000
mov ds , cx

do:
cmp bx ,0x0AF0 ; 0AF0 H = 2800 循环 2800 次
ja write
; bx bp si di
; si di
; bx,bp 上下组合
mov byte [es:bx],' '
inc bx
mov byte [es:bx],0x0c
inc bx

jmp do

write:
mov byte [es:bx],'h'
inc bx
mov byte [es:bx],0x0c
inc bx

mov byte [es:bx],'e'
inc bx
mov byte [es:bx],0x0c
inc bx

mov byte [es:bx],'l'
inc bx
mov byte [es:bx],0x0c
inc bx

mov byte [es:bx],'l'
inc bx
mov byte [es:bx],0x0c
inc bx

mov byte [es:bx],'o'
inc bx
mov byte [es:bx],0x0c
inc bx

; mov ax , 0
write2:

mov cl , byte [ds:si]

cmp cl , 0
je exit


mov byte [es:bx] , cl
inc bx
mov byte [es:bx] , 0x0c
inc bx
inc si
inc ax
jmp write2


exit:
程序源码-方法二(.asm)
org 0x7c00  
jmp start
string db 'hello world',0
start:
mov ax,0xb800
mov es,ax
mov bx , 0x0000
mov ax , 0
mov si , 0x7c03
mov cx , 0x0000
mov ds , cx
do: ;清屏
cmp bx ,0x0AF0
ja printstr
mov byte [es:bx],' '
inc bx
mov byte [es:bx],0x0c
inc bx
jmp do
printstr:;输出字符串
mov cl , byte [ds:si]
cmp cl , 0
je exit
mov byte [es:bx] , cl
inc bx
mov byte [es:bx] , 0x0c
inc bx
inc si
jmp printstr
exit:


标签:并打印,mov,源码,es,byte,0x0c,bx,asm,inc
From: https://blog.51cto.com/u_15739363/5764691

相关文章