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

  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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值