王爽汇编语言第七章学习笔记和实验六答案

1.and和or的指令,具体可以总结为:and 有0则0;or 有1则1;
2.关于ASCII码的一些常用编码:例如小写字母比大写字母大32,也就是20H,小写字母从61H开始等等;
3.关于and和or指令的说明:
将al的第6位设置为0的指令是:and al,10111111B;
将al的第7位设置为0的指令是:and al,01111111B;
将al的第0位设置为0的指令是:and al,11111110B;
将al的第6位设置为1的指令是:or al,01000000B;
将al的第7位设置为1的指令是:or al,10000000B;
将al的第0位设置为1的指令是:or al,00000001B;
4.[bx+idata]的说明:mov ax,[bx+200]
(AX)=((DS)*16+(BX)+200)
5.mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200
以上三种指令实现相同的操作;
6.SI和DI在8086cpu中与bx的功能相近,但是DI和SI不能分成两个独立的8位处理器,例如在下面的3组指令中实现了相同的目的:
mov bx,0
mov ax,[bx]

mov si,0
mov ax,[si]

mov di,0
mov ax,[di]
7.[bx+si]和[bx+di]的指令说明:
mov ax,[bx][si]
(AX)=((DS)*16+(BX)+(SI))
8.[bx+si+idata]和[bx+di+idata]的说明:
mov ax,[bx+si+idata]的含义:
(AX)=((DS)*16+(BX)+(SI)+IDATA)
9.以下几组指令,实现了相同的操作:
mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[si][bx].200
10.关于几种定位内存地址方法的说明:
1.[idata]用一个常量来表示,可以用于直接定位一个内存单元;
2.[bx]用一个变量来表示内存,可以用与间接定位一个内存地址;
3.[bx+idata]用一个常量和变量来表示地址,可以在一个起始地址的基础上用变量间接定位一个内存单元;
4.[bx+si]用两个变量表示地址;
5.[bx+si+idata]用两个变量和一个常量表示地址。
11.关于在一段程序中用两个循环的说明:
一般来说,需要暂时存储数据的时候最好用一个栈来存储;
12.本章的重点应用就是大小写字母的转换问题,具体的做法就是应用循环和and,or等指令将ascii的特殊位变成1 或者0.

以下是实验6第二题的内容:
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:
mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0:push cx
mov si,0
mov cx,4
s:mov al,[bx+si+3]
and al,11011111b
mov [bx+si+3],al
inc si
loop s
add bx,16
pop cx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
此题与书上的例题差不多一样,只要该几个地方就可以了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值