8086汇编1:HELLO WORLD

 assume cs:code,ds:data
data segment
   str1 db 'hello world123456789$'
data ends


code segment

start:
   mov ax,data
   mov ds,ax
   
   mov dx,offset str1


   mov ah,09h
   int 21h


   mov ah,4ch
   int 21h


code ends


end


上面的代码,实现HELLO WORLD ,相当于c语言打印printf("hello world123456789");


知识点:

(1)寄存器:CPU有14个16位寄存器,分别是:AX,BX,CX,DX, CS,DS,ES,SS,SI,DI,BP,SP,IP,FLAG.每个16位寄存器又分为高8位以及低8位,比如AX,高8位为AH,低8位为AL.

(2) 汇编分为4个段,分别是代码段、数据段、堆栈段、附加段。本程序只是用了代码段以及数据段。数据段主要用于存放数据,代码段主要编写指令。

(3)代码段:

data segment
   str1 db 'hello world123456789$'
data ends

其中db是指字节,汇编中常用的定义包括db 、 dw  、DD,其中DB为1个字节,DW为字,即2个字节,DD为双字,即4个字节。'hello world123456789$' 表示一个字符串,在汇编中单引号以及双引号都可以用来定义字符串。$为字符串结束符,相当于C语言的'\0'

(4)  声明

assume cs:code,ds:data   声明代码段是哪些段,数据段是哪些段

(5)代码段.

start:  指令的入口地址,相当于C语言的main

   mov ax,data
   mov ds,ax


表示把代码段的段基址放入DS寄存器(注意在8086中寻址是采用段基址*16+偏移地址来寻址的,通过这样扩展,16位能够寻址1M内存)。


 mov dx,offset str1

取数据段字符串的偏移地址,并传输到 DX中

   mov ah,09h
   int 21h

调用DOS中断打印字符,09表示打印字符,DOS会自动从DX读取字符进行打印,直到遇到$停止。

  mov ah,4ch
   int 21h

返回,相当于return ;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值