您的位置:首页 > 其它

汇编语言第六、七章的知识总结

2020-04-22 15:52 204 查看
  1. 数据段

  2. db和dw定义字节型数据和字型数据

    assume cs:code
    code segment
    dw (栈,数据)
    start:
    ;
    (代码)
    code ends
    ends start

  3. 将数据,代码,栈放入不同段

    assume cs:code , ds:data , ss:stack
    data segment
    dw (数据地址)
    data ends
    
    stack segment
    dw 0,0,0,0,0,0,0,0
    stack ends
    
    code segment
    start : move ax,stack
    move ss,ax
    move sp,20h  //设置栈顶ss:sp 即 stack:20h
    move ax,data
    move ds,ax   // ds指向data段
    move bx,0    // ds:bx 指向data段中的第一个单元
    move cx,4
    s:push [bx]
    add  bx,2
    loop s 			//将data 段中的0-7单元中的4个字型数据依次入栈
    
    move bx,0
    move cx ,8
    s0:	pop [bx]
    add bx,2
    loop s0
    
    move ax,4c00h
    int 21h
    code ends
    end start
  4. and运算 ,同为1才为1 相当于&&
    OR或运算,有一个是1就为1,否则为0 相当于||
    xor 异或运算 ,不相同,则异或结果为1。相同,异或结果为0。
    not 运算 ,值取反。


6. [bx+idata]可以定位数组、字符串中的值;也可以用[bx+si(或di)]或
[bx+si+idata]的方式来指明一个内存单元。(括号里的相当于偏移地址)
7. si和di是和bx功能接近的寄存器,不能被拆成两个8位寄存器。
8. 例:将datasg段中的每一个单词的头一个字母改为大写

assume cs:datasg,ds:datasg
data segment
db '1.one           '
db '2.two           '
db '3.three         '
db '4.fore          '
datasg ends

codesg segment
mov ax,datasg
mov ds,ax
mov bx,0

mov cx,4
s:mov al, [bx+3]  // 用[bx+idata]来对目标单位寻址,提取cs:[bx+3]中的值到al
and al,11011111b  //将2进制第6位改为0,即把小写字母的ascll码减32
mov [bx+3],al
add bx,16
loop s
code ends
end start
  • 点赞
  • 收藏
  • 分享
  • 文章举报
leavrow 发布了23 篇原创文章 · 获赞 0 · 访问量 433 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: