汇编基础(二)

汇编基础格式

assume cs:codesg;assume将段和相关段寄存器关联起来
codesg segment;abc segment...abc ends 定义一个段名为abc的段
    mov ax,0123h
    mov bx,0456h
    add ax,bx
    add ax,ax
    mov ax,4c00h;返回
    int 21h
codesg ends
end;汇编程序结束标记

;汇编的流程
;edit编程->.asm->masm编译->.obj->link连接->.exe->command加载->内存条的程序->CPU运行

一些指令

loop指令
(cx)=(cx)-1
if cx!=0 
	转至标号处执行程序
elseif cx==0
	向下执行
end


sample1 :2^12
assume cs:code
code segment
    mov ax,2
    mov cx,11
    s:add ax,ax
    loop s
    mov ax,4c00h
    int 21h
    code ends
end


sample2
assume cs:code
code segment  
    ;计算FFFF:0006单元中的数乘3,结果存储在dx中
    ;要先把地址指向ffff:0006
    mov ax,0ffffh;数字不能以字母开头,要加0
    mov ds,ax
    mov bx,6
    mov ax,[bx]
    mov ah,0h 
    
    
    mov cx,3
    mov dx,0
    s:add dx,ax
    loop s
    mov ax,4c00h
    int 21h
end
注意,debug和masm对指令的处理是不同的
mov ax,[0]
;debug:将ds:0处的数据送入ax中
;masm:将0送入ax中

;在源程序中实现将内存20001单元的数据送入al中:
;用寄存器
mov ax,2000h
mov ds,ax
mov bx,1
mov al,[bx]

;显式给出段地址所在的段寄存器
mov ax,2000h
mov ds,ax
mov al,ds:[1]

课后练习:

1.向内存0:200-0:23f依次传送数据0-63

assume cs:code
code segment 

;向内存0200-0:23f依次传送数据0-63
mov ax,20h ;0:200等价于200
mov ds,ax
mov bx,0
mov cx,40h

s:  mov ds:[bx],bx
    inc bx

loop s
mov ax,4c00h
int 21h
code ends
end

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值