汇编语言-更灵活的定位内存地址的方法
目录
一、and和or指令
1.补充知识:
2.and指令
3.or指令
二、以字符的形式给出的数据
三、大小写转换
ACSII码值对照表:
一、and和or指令
1.补充知识:
与运算(&):两个计算的二进制数相同位为1结果为1,否则为0。
1 1&1=1
2 1&0=0
3 0&1=0
4 0&0=0
或运算(|):相同位的二进制数有1为1,否则为0。
1 1|0=1
2 1|1=1
3 0|1=1
4 0|0=0
异或运算(^) :同0异1。
1 1^1=0
2 1^0=1
3 0^1=1
4 0^0=0
2.and指令
(1)定义:逻辑与指令,按位进行与运算。
(2)例:
mov al,01100011B
and al,00111011B
执行后:al =00100011
(3)通过该指令可将操作对象的相应位设为0,其他位不变。
例:
将al的第六位设为0的指令:and al,10111111B。
3.or指令
(1)定义:逻辑或指令,按位进行或运算。
(2)例:
mov al,01100011B
or , 00111011B
执行后:al=01111011B
(3)通过该指令可将操作对象的相应位设为1,其他位不变。
例:
将al的第六位设为1的指令:or al,01000000B。
二、以字符的形式给出的数据
在汇编语言中,用'......'的方式指明数据是以字符的形式给出的。
例: assume cs:code,ds:data
data segment
db 'unIX'
db 'foRK'
data ends
code segment
start mov al,'a'
mov bl,'b'
mov ax,4c00h
int 21h
code ends
end start
其中:
db 'unIX'相当于“db 75H,6EH,49H,58H”,"u","n","I","X"的ASCII码分别为:75H、75H、6EH、49H、58H。
db 'foRK'相当于“db 66H,6FH,52H,4BH”,"f","o","R","K",的ASCII码分别为:66H、6FH、52H、4BH。
mov al,'a'相当于“mov al,61H”,“a”的ASCII码为61H;
mov al,'b'相当于“mov al,62H”,“a”的ASCII码为62H。
三、大小写转换
考虑一个问题,在code中填写代码,将datasg中的第一个字符串转化为大写,第二个字符串转化为小写:
assume cs:code,ds:datasg
datasg segment
db 'BaSiC'
db 'iNfOrMaTiOn'
datasg ends
codesd segment
start:
codesg ends
end start
ACSII码值对照表:
SCII 码 | 字符 | ASCII 码 | 字符 | ASCII 码 | 字符 | ASCII 码 | 字符 | |||||||
十进位 | 十六进位 | 十进位 | 十六进位 | 十进位 | 十六进位 | 十进位 | 十六进位 | |||||||
032 | 20 | 056 | 38 | 8 | 080 | 50 | P | 104 | 68 | h | ||||
033 | 21 | ! | 057 | 39 | 9 | 081 | 51 | Q | 105 | 69 | i | |||
034 | 22 | " | 058 | 3A | : | 082 | 52 | R | 106 | 6A | j | |||
035 | 23 | # | 059 | 3B | ; | 083 | 53 | S | 107 | 6B | k | |||
036 | 24 | $ | 060 | 3C | < | 084 | 54 | T | 108 | 6C | l | |||
037 | 25 | % | 061 | 3D | = | 085 | 55 | U | 109 | 6D | m | |||
038 | 26 | & | 062 | 3E | > | 086 | 56 | V | 110 | 6E | n | |||
039 | 27 | ' | 063 | 3F | ? | 087 | 57 | W | 111 | 6F | o | |||
040 | 28 | ( | 064 | 40 | @ | 088 | 58 | X | 112 | 70 | p | |||
041 | 29 | ) | 065 | 41 | A | 089 | 59 | Y | 113 | 71 | q | |||
042 | 2A | * | 066 | 42 | B | 090 | 5A | Z | 114 | 72 | r | |||
043 | 2B | + | 067 | 43 | C | 091 | 5B | [ | 115 | 73 | s | |||
044 | 2C | , | 068 | 44 | D | 092 | 5C | \ | 116 | 74 | t | |||
045 | 2D | - | 069 | 45 | E | 093 | 5D | ] | 117 | 75 | u | |||
046 | 2E | . | 070 | 46 | F | 094 | 5E | ^ | 118 | 76 | v | |||
047 | 2F | / | 071 | 47 | G | 095 | 5F | _ | 119 | 77 | w | |||
048 | 30 | 0 | 072 | 48 | H | 096 | 60 | ` | 120 | 78 | x | |||
049 | 31 | 1 | 073 | 49 | I | 097 | 61 | a | 121 | 79 | y | |||
050 | 32 | 2 | 074 | 4A | J | 098 | 62 | b | 122 | 7A | z | |||
051 | 33 | 3 | 075 | 4B | K | 099 | 63 | c | 123 | 7B | { | |||
052 | 34 | 4 | 076 | 4C | L | 100 | 64 | d | 124 | 7C | | | |||
053 | 35 | 5 | 077 | 4D | M | 101 | 65 | e | 125 | 7D | } | |||
054 | 36 | 6 | 078 | 4E | N | 102 | 66 | f | 126 | 7E | ~ | |||
055 | 37 | 7 | 079 | 4F | O | 103 | 67 | g | 127 | 7F | DEL |
通过对照我们不难看出小写字母的ASCII码值比大写字母的ACSII码值大20H。我们以 'BaSiC'为例:
assume cs:code,ds:datasg
datasg segment
db 'BaSiC'
db 'iNfOrMaTiOn'
datasg ends
codesd segment
start:mov ax,datasg
mov ds,ax
mov bx,0
mov cx,5
s:mov al,[bx]
如果(al)>61H,则小写字母的ASCII码,则:sub al,20H
mov [bx],al
inc bx
loop s
.
.
.
codesg ends
end start
汇编语言-更灵活的定位内存地址的方法相关推荐
- [汇编语言]更灵活的定位内存地址的方法
目录 一.and和or指令 二.以字符的形式给出数据 三.大小写转化问题 四.[bx+idata] 五.SI和DI 六.[bx+si]和[bx+di] 与 [bx+si+idata]和[bx+di+i ...
- (七)汇编语言——更灵活的定位内存地址的方法
目录 and和or ASCII码 [bx+idata] SI和DI寄存器 [bx+si]和[bx+di] [bx+si+idata]和[bx+di+idata] 总结 例子(双重循环的解决方案) 我们 ...
- 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33
第七章:更灵活的定位内存地址的方法02 让编程改变世界 Change the world by program [bx+idata] 在前面,我们可以用[bx]的方式来指明一个内存单元, 我们还可以用 ...
- 更灵活的定位内存地址的方法05 - 零基础入门学习汇编语言36
第七章:更灵活的定位内存地址的方法05 让编程改变世界 Change the world by program 问题7.8 [codesyntax lang="asm"] assu ...
- 更灵活的定位内存地址的方法---汇编学习笔记
更灵活的定位内存地址的方法 前面,我们用[0].[bx]的方法,在访问内存的指令中,定位内存单元的地址.本章将用更灵活的方式来定位内存地址. 7.1 and和or指令 (1)and指令:逻辑与指令,按 ...
- 汇编: 更灵活的定位内存地址的方法
bx是偏移地址寄存器.同样的, si,di也是偏移地址寄存器. 这样使用了si,di可以更灵活的定位内存地址. assume cs:codecode segmentstart: mov bx,0mov ...
- 王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)
汇编语言(第三版)王爽著 的十二个实验:https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm,intel 这 ...
- 《汇编语言》总结04 —— 更灵活的定位内存地址的方法
(一)and和or指令 and指令:逻辑与指令,按位进行与运算 mov al,01100011B and al,00111011B 执行后,al=00100011B 作用:通过该指令可将操作对象的相应 ...
- 汇编语言-王爽 第7章 更灵活的定位内存地址的方法-笔记
将datasg中的第一个字符串转化为大写,第二个字符串转化为小写. 第一种方法: assume cs:codesg,ds:datasgdatasg segmentdb 'BaSic'db 'iNfOr ...
最新文章
- python怎么安装第三方库-vs2017怎么安装python第三方包
- 进程通信学习笔记(Posix消息队列)
- 计算机视觉——利用openCV与Socket结合进行远程摄像头实时视频传输并保存图片数据
- html原生音频播放器倍速,HTML5倍数功能视频播放器(加速2倍,1.5倍播放)
- [转]Java序列化的高级认识
- web 自动化测试 selenium基础到应用(目录)
- python 自动化 在日历中选择时间-python – 在日历日期选择器上使用selenium
- arm指令集_重磅!Arm宣布:指令集,客户可自定义
- 95. php 与 xml
- 高优先权调度算法和高响应比优先调度算法
- PCS7 DCS 水泥粉磨程序
- 射极跟随器负载加重解析
- 用SPSS做数据分析时遇到的几个小问题——解决方法!
- Error: ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk 解决
- 忘记了已保存自动登录的密码,怎么办?
- MSCOCO数据集转VOC数据集训练目标检测模型
- 交互题 XOR Guessing
- 如何解决:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
- 逻辑回归与softmax回归
- 香港科技大学陈浩教授招收AI全奖博士