汇编语言(王爽)7章部分截图笔记

若有效地址用SI、DI和BX来指定,则其缺省的段寄存器为DS;
若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。

assume ds:data,cs:code

data segment
	db 'unIxabc'
	db 'foRKxY'
data ends
code segment
	start:
	mov ax,data
	mov ds,ax
	mov cx,7
	mov bx,0
	s:
	mov al,ds:[bx]
	or al,00100000b
	mov ds:[bx],al
	//上三行可以or byte ptr ds:[bx],00100000b代替
	inc bx
	loop s
	mov cx,6
	s1:
	mov al,ds:[bx]
	and al,11011111b
	mov ds:[bx],al
	//上三行可以and byte ptr ds:[bx],11011111b代替
	inc bx
	loop s1

	mov ax,4c00h
	int 21h
code ends
end start
/*将unIxabc大写,foRKxY小写。两个知识点,
1是大写al,11011111b小写or al,00100000b,
2是mov al,ds:[bx] 和 mov ds:[bx],al 可以操作一个字节,
自己一开始写or ds:[bx],00100000b编译时报错operand must have size.

汇编中的PTR有两种作用:
1.type PTR expression
强制把expression当作指定的type来使用
2. [var] PTR type
定义var为指向类型的指针
*/
[bx+idata]:
mov ax,[bx+200]
将长度为2个字节(子单元)的内容送入ax
(ax)=((ds)*16+(bx)+200)


等价写法
mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200
assume ds:data,cs:code

data segment
	db 'welcome to masm!'
	db '................'
data ends
code segment
	start:
	mov ax,data
	mov ds,ax
	mov si,0
	mov cx,10h
	s:mov al,ds:[si]
	mov ds:[10h+si],al
	inc si
	loop s

	mov ax,4c00h
	int 21h
code ends
end start
/*作用是把'welcome to masm!'复制粘贴到它后面的区域,
书上的代码按字进行操作,cx=8,si每次加2*/

下面的代码使用栈临时保存cx,实现两层遍历,把data的12个小写字母变大写。

assume ds:data,cs:code,ss:stack

data segment
	db 'abc.............'
	db 'def.............'
	db 'ghi.............'
	db 'xyz.............'
data ends
stack segment
	dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
stack ends
code segment
	start:
	mov ax,stack
	mov ss,ax
	mov sp,10h
	mov ax,data
	mov ds,ax
	mov cx,4
	s:
	push cx
	mov si,0
	mov cx,3
		s1:
			mov al,ds:[si+bx]
			and al,11011111b
			mov [si+bx],al	
			inc si
		loop s1
	pop cx
	add bx,10h
	loop s
	
	mov ax,4c00h
	int 21h
code ends
end start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值