![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编
HGGshiwo
这个作者很懒,什么都没留下…
展开
-
【汇编】汇编考前总结
本文是对汇编语言基础知识点的总结主要包括以下内容进制转换补码类型地址转换寄存器程序格式寻址指令小端规则堆栈对参数调用进制转换10进制->16进制:除16取余法.16进制->10进制:按权展开相加法10进制->2进制:除2取余法2进制->10进制:按权相加展开法2进制->16进制:每4位转换一位16进制->2进制:每一位转换4位补码已知x的补码,要求-x的补码:x的补码取反加1x可以为正,也可以为负类型类型2进制位字节寄存器原创 2020-08-23 17:17:40 · 647 阅读 · 1 评论 -
【汇编复习】指令集
指令语法作用标志位注意点movmov ax, bxbx的值传递给ax不影响操作数不能都为变量,不能把常数赋值给段寄存器,不允许对cs赋值,不能用段寄存器赋值段寄存器,操作数类型必须一致,以下均为错误指令:mov byte ptr ds:[108Ch],byte ptr ds:[1000h] ;内存赋值给内存。mov ds, 1000h ;常数赋值段地址.mov ax, byte ptr ds:[bx] ;操作数类型不一致,赋值段地址只能用间接赋值,可以是寄存器或者变量...原创 2020-06-29 16:48:01 · 673 阅读 · 0 评论 -
【汇编复习】地址与寻址
内存内容一个存储单元可以放一个字节的内容(两位十六进制数)内存地址地址一共20位,即5个16进制位分为段地址和偏移地址地址=段地址16+偏移地址段地址有五位,但是用四位十六进制数表示,因为最后一位一定是0因为段地址不能随意选取,只能从最后一位是0的地址中选偏移地址用四位十六进制数表示比如地址04005h表示为0400:0005h或者0399:0015h都行算的时候:400h10h+5h=4005h399h*10h+15h=4005h一个段长度最大为64k,1000h字节,可以少于6原创 2020-06-28 16:15:40 · 1337 阅读 · 0 评论 -
【汇编复习】寄存器
寄存器通用寄存器数据寄存器16位寄存器:ax,bx,cx,dx每一个寄存器可以分为高8位和低8位,al,ah,ba,bh…分别使用习惯用法:ax:累加器bx:基址寄存器,寻址时存放基地址cx:计数寄存器,循环时作为计数器dx:数据寄存器,辅助ax存放较大的数地址寄存器16位寄存器:si,di,sp,dp多用来作为数组下标使用段寄存器16位寄存器:cs,ss,ds,escs:代码段的地址ss:堆栈段的地址ds:数据段的地址es:附加段的地址,用来编程时候自己标记段的位置控原创 2020-06-27 22:42:07 · 550 阅读 · 0 评论 -
【汇编复习】数据
目录进制转换位数符号数正负数变换符号扩展字符表示运算进制转换十进制转X进制,都是除X,答案作为该位上的数字,余数作为下一个被除数,直到除完为止。X进制转十进制,该位上的数字a乘与X的位数i次幂,求和十六进制与二进制:每四位二进制对应一位十六进制位数一位:bit 1个二进制位,半字节:nibble 4个二进制位,int类型字节:byte 8个二进制位,能表示的数最大为28=2562^8=25628=256,相当于char类型字: word 16个二进制位,两个字节,int类型双字:dwor原创 2020-06-27 21:25:08 · 189 阅读 · 0 评论 -
16位汇编编译报错和解决办法
不同的编译器会报不同的错以及可能有多种原因导致一个报错。我只记录了我所遇到的错误。1.relative jump out of range by XXXh bytes跳转距离过长。解决方法:1.在程序中增加无条件的跳转中介。2.将一部分代码片段移出跳转2.missing or unreachable cs解决方法:assume cs:code注意这句话写在代码标号之前,否则也会报...原创 2020-04-12 09:18:38 · 8092 阅读 · 1 评论 -
中断21h使用
ah功能返回21h读入键盘上输入的字符串到回车为止返回读取内容的首地址ds:dx,其中第一个参数是最大能读的字符串个数,第二个参数是读到字符串的个数(不包括回车键),后面是读到的字符串,最后一个字符是回车...原创 2020-05-04 19:40:50 · 548 阅读 · 0 评论 -
汇编代码技巧
汇编比较基础,所以写起来比较麻烦。所以稍微总结一下可能可以写的方便一点的方法。1.if两种判断if a>b c=a else c=b #如果用cmp两次就比较麻烦所以考虑用下面这种,只需要跳一次就好 c=b cmp a, b ja done c=a done: ...2.数组倒着写有时候要求实现a[0]到a[n]的写入,但是算到n之前不知道什么时候结束,而且是算出答案的顺序是从后往前的(比如进制转化) mov ax, 0 ;记录push的次数again: cal原创 2020-05-19 10:35:21 · 301 阅读 · 0 评论