汇编语言指令-汇编语言指令,汇编,语言,指令优质

编辑:周舟 | 时间:2021-08-16 00:13:39
来源:互联网
正文
编辑推荐

求汇编语言指令,最好详细些

051指令集

资料转移指令
MOV 移动
MOVC 程式记忆体移动
MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令
PUSH 放入堆叠
POP 由堆叠取回
XCH 8位元交换
XCHD 低4位元交换
SWAP 高低4位元交换


算术指令
ADD 两数相加
ADDC 两数相加再加C
SUBB 两数相减再减C
INC 加一指令
DEC 减一指令
MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存B
DIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存B
DA (DA A 只此一条指令)调整为十进数

逻辑指令
ANL做AND(逻辑与)运算
ORL做OR(逻辑或)运算
XRL 做(逻辑异或)运算
CLR 清除为0
CPL 取反指令
RL 不带进位左环移
RLC 带进位左环移
RR 不带进位右环移
RRC 带进位右环移

控制转移类指令
JC C=1时跳
JNC C=0时跳
JB 位元=1时跳
JNB 位元=0时跳
JBC 位元=1时跳且清除此位元
LCALL 长调用子程序
ACALL 绝对调用子程序
RET 由副程式返回
RETI 由中断副程式返回
AJMP 绝对转移
SJMP 相对转移
JMP @A+DPTR 散转,相对DPTR的间接转移
JZ A=0时跳
JNZA 0时跳
CJNE 二数比较,不相等时跳
DJNZ 减一,不等於0时跳
NOP 空操作

位变量指令
SETB 设定为1

ORG 程序开始,规定程序的起始地址
END 程序结束
EQU 等值指令(先赋值后使用)例:SUM EQU 30H
DB 定义字节指令
DW 定义字内容
DS 定义保留一定的存贮单元数目
BIT 位地址符号指令 例:SAM BIT P1.0
RET 子程序返回指令
RETI 中断子程序返回指令
$ 本条指令地址


算术运算指令
指令 说明 周期
ADD A,Rn A←A+Rn 12
ADD A,direct A←A+direct 12
ADD A,@Ri A←A+Ri 12
ADD A,#data A←A+data 12
ADDC A,Rn A←A+Rn+C 12
ADDC A,direct A←A+direct+C 12
ADDC A,@Ri A←A+Ri+C 12
ADDC A,#data A←A+data+C 12
SUBB A,Rn A←A-Rn-C 12
SUBB A,direct A←A-direct-C 12
SUBB A,@Ri A←A-Ri-C 12
SUBB A,#data A←A-data-C 12
INC A A←A+1 12
INC Rn Rn←Rn+1 12
INC direct direct←direct+1 12
INC @Ri @Ri←@Ri+1 12
INC DPTR DPTR←DPTR+1 12
DEC A A←A-1 12
DEC Rn Rn←Rn-1 12
DEC direct direct←direct-1 12
DEC @Ri @Ri←@Ri-1 12
MUL AB 两个无符号的8位数据相乘,其中高阶8位放入B缓存器,低阶8位则放入累积器ACC 24
DIV AB 两个无符号的8位数据相除,把ACC值除以B缓存器值,商数放回ACC,余数放在B 48
DA A 累加器作十进制调整 48
     
     
逻辑运算指令
指令 说明 周期
ANL A,Rn A←A and Rn 12
ANL A,direct A←A and direct 12
ANL A,@Ri A←A and Ri 12
ANL A,#data A←A and data 12
ANL direct,A direct←direct and A 12
ANL direct,#data direct←direct and data 24
ORL A,Rn A←A or Rn 12
ORL A,direct A←A or direct 12
ORL A,Rn A←A or Rn 12
ORL A,@Ri A←A or Ri 12
ORL A,#data A←A or data 12
ORL direct,A direct←direct or A 12
ORL direct,#data direct←direct or data 24
XRL A,Rn A←A xor Rn 12
XRL A,direct A←A xor direct 12
XRL A,@Ri A←A xor Ri 12
XRL A,#data A←A xor data 12
XRL direct,A direct←direct xor A 12
XRL direct,#data direct←direct xor data 12
CLR A 清除累加器 12
CPL A 累加器反相 12
RL A 累加器向左旋转 12
RLC A 累加器和C左旋 12
RR A 累加器向右旋转 12
RRC A 累加器和C右旋 12
SWAP A 累加器的高低四位互换 12
     
     
数据转移指令
指令 说明 周期
MOV A,Rn A←Rn 12
MOV A,direct A←direct 12
MOV A,@Ri A←Ri 12
MOV A,#data A←data 12
MOV Rn,A Rn←A 12
MOV Rn,direct Rn←direct 24
MOV Rn,#data Rn←data 12
MOV direct,A direct←A 12
MOV direct,Rn direct←Rn 24
MOV direct,direct direct←direct 24
MOV direct,@Ri direct←Ri 24
MOV direct,#data direct←data 24
MOV @Ri,A Ri←A 12
MOV @Ri,direct Ri←direct 24
MOV @Ri,#data Ri←data 12
MOV DPTR,#data 16 Ri←16bit data 24
MOVC A,@A+DPTR A←程序内存的数据 24
MOVC A,@A+PC A←程序内存的数据 24
MOVX A,@Ri A←外部RAM的数据(8bit地址) 24
MOVX A,@DPTR A←外部RAM的数据(16bit地址) 24
MOVX @Ri,A 外部的RAM(8bit)←A 24
MOVX @DPTR,A 外部的RAM(16bit)←A 24
PUSH direc 推迭区←direct 24
POP direc direct←堆栈区 24
XCH A,Rn A和Rn互换 12
XCH A,direct A和direct互换 12
XCH A,@Ri A和Ri互换 12
XCHD A,@Ri A和Ri的低四位互换 12
     
     
位运算指令
指令 说明 周期
CLR C 清除进位旗标 12
CLR bit 清除直接位 12
SETB C 设定进位旗标 12
SETB bit 设定直接位 12
CPL C 进位旗标反相 12
CPL bit 直接位反相 12
ANL C,bit C←C and bit 24
ANL C,/bit C←C and bit(反相) 24
ORL C,bit C←C or bit 24
ORL C,/bit C←C or bit(反相) 24
MOV C,bit C←bit 12
MOV bit,C bit←C 24
JC rel 若C=1跳至rel 24
JNC rel 若C=0跳至rel 24
JB bit,rel 若bit=1跳至rel 24
JNB bit,rel 若bit=0跳至rel 24
JBC bit,rel 若bit=1跳至rel,且清除此位 24
     

     
程序跳跃指令
指令 说明 周期
ACALL addr11 绝对式子程序呼叫 24
LCALL addr16 远程子程序呼叫 24
RET 从子程序返回 24
RETI 从中断子程序返回 24
AJMP addr11 绝对式跳跃 24
LJMP addr16 远程跳跃 24
SJMP rel 短程跳跃 24
JMP @A+DPTR 间接跳跃 24
JZ rel 若A=0跳至rel 24
JNZ rel 若A不等于0跳至rel 24
CJNE A,direct,rel 若A不等于direct跳至rel 24
CJNE A,#data,rel 若A不等于data跳至rel 24
CJNE Rn,#data,rel 若Rn不等于data跳至rel 24
CJNE @Ri,#data,rel 若Ri不等于data跳至rel 24
DJNZ Rn,rel Rn减1不等于0跳至rel 24
DJNZ direct,rel direct减1不等于0跳至rel 24
NOP 没动作 12
     
     
缩写符号说明
缩写符号 说明 备注
Rn 缓存器R0-R7  
direct 8bit内部数据存储器,包括  
1.内部数据存储器(00-7F)的地址
2.特殊功能缓存器(80-FF)的地址,如P0,PSW,TMOD..等
@Ri 由缓存器R0或R1所寻址的内部RAM数据  
#data 8bit常数  
#data 16 16bit常数  
addr 16 16bit的目的地址,可使跳跃指令跳跃64k  
addr 11 11bit的目的地址,可使跳跃指令跳跃2k  
rel 具正负号的8位地址偏移量,用于相对地址的跳跃  
bit 1个bit:只所有可以位寻址的位。(如PSW.7为CY旗号)  
A 累加器(累积器)  
C或CY 进位旗号  
AC 辅助进位旗号  
Bb 指定位B0-B7  
D 半字节(4Bit)助忆符号  
F0 旗号0  
I 中断  
PC 程序计数器  
P0 I/O port 0  
P1 I/O port 1  
P2 I/O port 2  
P3 I/O port 3  
PSW 程序状态字组(类似于旗号缓存器)  
SP 堆栈指针缓存器  
B 缓存器B  
DPTR 数据指针缓存器  
X 外部滋要内存的助忆符号  
@ 间接地址符号  
$ 程序计数迄目前的值  
reg 缓存器




8051 INSTRUCTION SET
1.Arithmetic operations:
Mnemonic    Byte  Cyc
ADD A,@Ri   1    1
ADD A,Rn    1     1
ADD A,direct   2     1
ADD A,#data   2     1
ADDC A,@Ri   1    1
ADDC A,Rn    1    1
ADDC A,direct   2    1
ADDC A,#data   2    1
SUBB A,@Ri    1    1
SUBB A,Rn    1    1
SUBB A,direct   2     1
SUBB A,#data   2    1
INC A      1    1
INC @Ri     1    1
INC Rn      1    1
INC DPTR     1    1
INC direct    2   1
INC direct    2   1
DEC A      1   1
DEC @Ri     1   1
DEC Rn     1   1
DEC direct    2   1
MUL AB     1    4
DIV AB     1   4
DA A      1    1

2.Logical opreations:
ANL A,@Ri   1 1
XRL A,@Ri   1 1
ANL A,Rn   1 1
XRL A,Rn   1 1
ANL A,direct 2 1
XRL A,direct 2 1
ANL A,#data 2 1
XRL A,#data 2 1
ANL direct,A 2 1
XRL direct,A 2 1
ANL direct,#data 3 2
XRL direct,#data 3 2
ORL A,@Ri 1 1
CLR A 1 1
ORL A,Rn 1 1
CPL A 1 1
ORL A,direct 2 1
RL A 1 1
ORL A,#data 2 1
RLC A 1 1
ORL direct,A 2 1
RR A 1 1
ORL direct,#data 3 2
RRC A 1 1
SWAP A 1 1

3.Data transfer:
Mnemonic Byte Cyc
MOV A,@Ri 1 1
MOV DPTR,#data16 3 2
MOV A,Rn 1 1
MOVC A,@A+DPTR 1 2
MOV A,direct 2 1
MOVC A,@A+PC 1 2
MOV A,#data 2 1
MOVX A,@Ri 1 2
MOV @Ri,A 1 1
MOVX A,@DPTR 1 2
MOV @Ri,direct 2 2
MOVX @Ri,A 1 2
MOV @Ri,#data 2 1
MOVX @DPTR,A 1 2
MOV Rn,A 1 1
PUSH direct 2 2
MOV Rn,direct 2 2
POP direct 2 2
MOV Rn,#data 2 1
XCH A,@Ri 1 1
MOV direct,A 2 1
XCH A,Rn 1 1
MOV direct,@Ri 2 2
XCH A,direct 2 1
MOV direct,Rn 2 2
XCHD A,@Ri 1 1
MOV direct,direct3 2
MOV direct,#data 3 2

4.Boolean variable manipulation:
Mnemonic Byte Cyc
CLR C 1 1
ANL C,bit 2 2
SETB C 1 1
ANL C,/bit 2 2
CPL C 1 1
ORL C,bit 2 2
CLR bit 2 1
ORL C,/bit 2 2
SETB bit 2 1
MOV C,bit 2 1
CPL bit 2 1
MOV bit,C 2 2

5.Program and machine control:
Mnemonic Byte Cyc
NOP 1 1
JZ rel 2 2
RET 1 2
JNZ rel 2 2
RETI 1 2
JC rel 2 2
ACALL addr11 2 2
JNC rel 2 2
AJMP addr11 2 2
JB bit,rel 3 2
LCALL addr16 3 2
JNB bit,rel 3 2
LJMP addr16   3   2
JBC bit,rel   3   2
SJMP rel    2 2
CJNE A,direct,rel  3 2
JMP @A+DPTR   1 2
CJNE A,#data,rel 3 2
DJNZ Rn,rel    2   2
CJNE @Ri,#data,rel 3  2
DJNZ direct,rel   3   2
CJNE Rn,#data,rel  3 2


求一个汇编语言的指令大全,要简小的

汇编金手指


汇编语言的各种指令的用法

汇编语言指令集
汇编指令是汇编语言中使用的一些操作符(如mov,inc,loop)和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
一、数据传输指令
  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。  
 1. 通用数据传送指令   
MOV 传送字或字节.   
MOVSX 先符号扩展,再传送.   
MOVZX 先零扩展,再传送.   
PUSH 把字压入堆栈.   
POP 把字弹出堆栈.   
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.   
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.   
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.   
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.   
BSWAP 交换32位寄存器里字节的顺序   
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)   
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )   
XADD 先交换再累加.( 结果在第一个操作数里 )   
XLAT 字节查表转换.   
── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即   0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )   

2. 输入输出端口传送指令.   
IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )   
OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )   
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,   其范围是 0-65535.   

3. 目的地址传送指令.   
LEA 装入有效地址.   例: LEA DX,string ;把偏移地址存到DX.   
LDS 传送目标指针,把指针内容装入DS.   例: LDS SI,string ;把段地址:偏移地址存到DS:SI.   
LES 传送目标指针,把指针内容装入ES.   例: LES DI,string ;把段地址:偏移地址存到ES:DI.   
LFS 传送目标指针,把指针内容装入FS.   例: LFS DI,string ;把段地址:偏移地址存到FS:DI.   
LGS 传送目标指针,把指针内容装入GS.   例: LGS DI,string ;把段地址:偏移地址存到GS:DI.   
LSS 传送目标指针,把指针内容装入SS.   例: LSS DI,string ;把段地址:偏移地址存到SS:DI.   

4. 标志传送指令.   
LAHF 标志寄存器传送,把标志装入AH.   
SAHF 标志寄存器传送,把AH内容装入标志寄存器.   
PUSHF 标志入栈.   
POPF 标志出栈.   
PUSHD 32位标志入栈.   
POPD 32位标志出栈.
二、算术运算指令

  ADD 加法.
  ADC 带进位加法.
  INC 加 1.
  AAA 加法的ASCII码调整.
  DAA 加法的十进制调整.
  SUB 减法.
  SBB 带借位减法.
  DEC 减 1.
  NEC 求反(以 0 减之).
  CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
  AAS 减法的ASCII码调整.
  DAS 减法的十进制调整.
  MUL 无符号乘法.
  IMUL 整数乘法.
  以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
  AAM 乘法的ASCII码调整.
  DIV 无符号除法.
  IDIV 整数除法.
  以上两条,结果回送:
  商回送AL,余数回送AH, (字节运算);
  或 商回送AX,余数回送DX, (字运算).
  AAD 除法的ASCII码调整.
  CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
  CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
  CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
  CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
三、逻辑运算指令
 AND 与运算.
  OR 或运算.
  XOR 异或运算.
  NOT 取反.
  TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
  SHL 逻辑左移.
  SAL 算术左移.(=SHL)
  SHR 逻辑右移.
  SAR 算术右移.(=SHR)
  ROL 循环左移.
  ROR 循环右移.
  RCL 通过进位的循环左移.
  RCR 通过进位的循环右移.
  以上八种移位指令,其移位次数可达255次.
  移位一次时, 可直接用操作码. 如 SHL AX,1.
  移位>1次时, 则由寄存器CL给出移位次数.
  如 MOV CL,04
  SHL AX,CL
四、串指令

  DS:SI 源串段寄存器 :源串变址.
  ES:DI 目标串段寄存器:目标串变址.
  CX 重复次数计数器.
  AL/AX 扫描值.
  D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
  Z标志 用来控制扫描或比较操作的结束.
  MOVS 串传送.
  ( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
  CMPS 串比较.
  ( CMPSB 比较字符. CMPSW 比较字. )
  SCAS 串扫描.
  把AL或AX的内容与目标串作比较,比较结果反映在标志位.
  LODS 装入串.
  把源串中的元素(字或字节)逐一装入AL或AX中.
  ( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
  STOS 保存串.
  是LODS的逆过程.
  REP 当CX/ECX0时重复.
  REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX0时重复.
  REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX0时重复.
  REPC 当CF=1且CX/ECX0时重复.
  REPNC 当CF=0且CX/ECX0时重复.
五、程序转移指令

  1>无条件转移指令 (长转移)
  JMP 无条件转移指令
  CALL 过程调用
  RET/RETF过程返回.
  2>条件转移指令 (短转移,-128到+127的距离内)
  ( 当且仅当(SF XOR OF)=1时,OP1<OP2 )
  JA/JNBE 不小于或不等于时转移.
  JAE/JNB 大于或等于转移.
  JB/JNAE 小于转移.
  JBE/JNA 小于或等于转移.
  以上四条,测试无符号整数运算的结果(标志C和Z).
  JG/JNLE 大于转移.
  JGE/JNL 大于或等于转移.
  JL/JNGE 小于转移.
  JLE/JNG 小于或等于转移.
  以上四条,测试带符号整数运算的结果(标志S,O和Z).
  JE/JZ 等于转移.
  JNE/JNZ 不等于时转移.
  JC 有进位时转移.
  JNC 无进位时转移.
  JNO 不溢出时转移.
  JNP/JPO 奇偶性为奇数时转移.
  JNS 符号位为 "0" 时转移.
  JO 溢出转移.
  JP/JPE 奇偶性为偶数时转移.
  JS 符号位为 "1" 时转移.
  3>循环控制指令(短转移)
  LOOP CX不为零时循环.
  LOOPE/LOOPZ CX不为零且标志Z=1时循环.
  LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
  JCXZ CX为零时转移.
  JECXZ ECX为零时转移.
  4>中断指令
  INT 中断指令
  INTO 溢出中断
  IRET 中断返回
  5>处理器控制指令
  HLT 处理器暂停, 直到出现中断或复位信号才继续.
  WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.
  ESC 转换到外处理器.
  LOCK 封锁总线.
  NOP 空操作.
  STC 置进位标志位.
  CLC 清进位标志位.
  CMC 进位标志取反.
  STD 置方向标志位.
  CLD 清方向标志位.
  STI 置中断允许位.
  CLI 清中断允许位.
六、伪指令

  DW 定义字(2字节).
  PROC 定义过程.
  ENDP 过程结束.
  SEGMENT 定义段.
  ASSUME 建立段寄存器寻址.
  ENDS 段结束.
  END 程序结束.
  七、处理机控制指令:
  标志处理指令 CLC(进位位置0指令)
  CMC(进位位求反指令)
  STC(进位位置为1指令)
  CLD(方向标志置1指令)
  STD(方向标志位置1指令)
  CLI(中断标志置0指令)
  STI(中断标志置1指令)
  NOP(无操作)
  HLT(停机)
  WAIT(等待)
  ESC(换码)
  LOCK(封锁)


求汇编语言全部指令及意思,新人,谢谢了 好的加悬赏

我用汇编4年啦,你的问题不是一句两句能将明白的,要想学好的话,明年过来学徒,这些知识的讲一礼拜,甚至还要长


汇编语言指令都有什么?有多少条?

汇编需要看处理器
处理器越高级 指令要求也就越多


总之 学会就知道有多少了


汇编语言MOV指令

汇编语言MOV指令

在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。其特点是不破坏源地址单元的内容。 例如: 1、MOVAX,2000H;将16位数据2000H传送到AX寄存器。 2、MOVAL,20H;将8位数据20H传送到AL寄存器。 3、MOVAX,BX;将BX寄存器的16位数据传送到AX寄存器。 4、MOVAL,[2000H];将2000H单元的内容传送到AL寄存器。 扩展资料: 汇编语言特点: 1、机器相关性 这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。 2、高速度和高效率 汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,且占用内存少,执行速度快,是高效的程序设计语言。 参考资料来源:百度百科-汇编语言

汇编语言XLAT指令如何使用

汇编语言XLAT指令如何使用

XLAT是查表指令,将BX指向表的首地址,AL中放得是要做相互转换的参数,比如说如下程序段: BUF DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH LEA BX,BUF MOV AL,01H XLAT 再送去数码管显示,就会显示出“1”了,也就是说XLAT可以用于码制转换。 扩展资料: 查表指令XLAT (XLAT:字节查表转换)。 指令格式:XLAT TABLE 其中TABLE为一待查表格的首地址。 指令功能:把待查表格的一个字节内容送到AL累加器中。在执行该指令前,应将TABLE先送至BX寄存器中,然后将待查字节与其在表格中距表首地址位移量送AL,即AL<--((BX)+(AL)). 执行XLAT将使待查内容送到累加器。 参考资料来源:百度百科-XLAT指令

汇编语言org指令怎么用??

汇编语言org指令怎么用??

ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。 ORG的使用: ORG2000H START:MOVAX,#00H 扩展资料 51单片机最常用的伪指令如下: (1)起始(Origin)伪指令 标号:ORGnn 功能:定义程序或数据块的起始地址。指示此语句后面的程序或数据块以nn为起始地址连续存放在程序存储器中。 例如: ORG2000H MOVA,20H … ORG伪指令规定了程序的起始地址从2000H开始,即该程序的第一条指令“MOVA,20H”从地址2000H开始存放。) (2)字节定义(DefineByte)伪指令 标号:DB(字节常数或字符或表达式) 功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(8位二进制数)。 例如: OGR100H TAB1:DB0FFH,'C',16,−1 从TAB1开始的地址单元依次存放0FFH、43H、10H、0FFH

汇编里的JAE和JGE有什么区别

JAE和JGE都是两数比较,前者大于等于后者则跳转,好像是一个是有符号一个是无符号。


汇编里的JAE和JGE有什么区别?

jge 转移条件:sf异或of=0 转移说明:大于等于转移 其他说明:有符号数,两个标志位sf和ofjae 转移条件:cf=0 转移说明:不低于,或者高于等于,或者进位标志转移清零时转移其他说明:单个标志,无符号数在转移指令之前有test、cmp等比较指令建议看看基础汇编的书:《80x86汇编语言程序设计教程》《汇编语言_第2版(王爽)》 汇编是普通程序员能接触到的最底层语言,学习汇编能够让程序员知道程序在机器上运行的最底层操作。我认为是最能够掌握软件精髓,编写最高效代码的必然选择。 至于怎么学习汇编,不同的人有不同的基础,这个很难有个统一标准。我只能分享一下自己的过程。 上世纪末毕业之后就开始开发单片机程序,使用汇编大约6-7年时间,之后在嵌入式中主要用C,汇编偶尔还是要用。刚开始接触单片机时,第一天先看汇编指令,什么MOV,JAMP之类的,指令并不多,也好理解。再要基本了解单片机的各个引脚。再看别人的经典代码,这个过程比较麻烦,因为好的代码往往写得很巧妙,为了效率(包括考虑运行速度和占用ROM、RAM空间等)代码有时让人难以理解,但看明白一段代码会收获很大。我觉得那时候的代码优美很多,可能现在的嵌入式芯片的空间和速度相对比以前快了很多,已经不大需要太过精简优美的代码。 在编写代码的时候,对单片机的RAM和ROM及引脚功能是必须要了解的,这样就可以编写简单的代码了。要写出好的代码,对芯片时钟和各指令所占字节空间和运行周期必须要掌握,再了解各种中断的原理,这样你在写代码的过程会发现完全掌握代码是如何在芯片上运行的,如何反应在引脚上,这种感觉很爽!在熟悉一种单片机或嵌入式之后,再做其他芯片的开发,你会发现并不困难,只需要重点了解芯片的资料,指令什么的差别都不大的。如果用便宜的芯片完成高精度的时序波形输出,汇编是个好选择。 个人在后期开发生涯,有使用过JAVA和C#,对比起来还是觉得汇编更得心应手,我想主要是汇编让我感觉到可掌控。

汇编语言指令

8086汇编指令手册


一、数据传输指令

它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP 交换32位寄存器里字节的顺序
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
XADD 先交换再累加.( 结果在第一个操作数里 )
XLAT 字节查表转换.
—— BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA 装入有效地址.
例: LEA DX,string ;把偏移地址存到DX.
LDS 传送目标指针,把指针内容装入DS.
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 传送目标指针,把指针内容装入ES.
例: LES DI,string ;把段地址:偏移地址存到ES:DI.
LFS 传送目标指针,把指针内容装入FS.
例: LFS DI,string ;把段地址:偏移地址存到FS:DI.
LGS 传送目标指针,把指针内容装入GS.
例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
LSS 传送目标指针,把指针内容装入SS.
例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
LAHF 标志寄存器传送,把标志装入AH.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF 标志入栈.
POPF 标志出栈.
PUSHD 32位标志入栈.
POPD 32位标志出栈.

二、算术运算指令
———————————————————————————————————————
ADD 加法.
ADC 带进位加法.
INC 加 1.
AAA 加法的ASCII码调整.
DAA 加法的十进制调整.
SUB 减法.
SBB 带借位减法.
DEC 减 1.
NEC 求反(以 0 减之).
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS 减法的ASCII码调整.
DAS 减法的十进制调整.
MUL 无符号乘法.
IMUL 整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM 乘法的ASCII码调整.
DIV 无符号除法.
IDIV 整数除法.
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);
或 商回送AX,余数回送DX, (字运算).
AAD 除法的ASCII码调整.
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令
———————————————————————————————————————
AND 与运算.
OR 或运算.
XOR 异或运算.
NOT 取反.
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
SHL 逻辑左移.
SAL 算术左移.(=SHL)
SHR 逻辑右移.
SAR 算术右移.(=SHR)
ROL 循环左移.
ROR 循环右移.
RCL 通过进位的循环左移.
RCR 通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.
移位一次时, 可直接用操作码. 如 SHL AX,1.
移位>1次时, 则由寄存器CL给出移位次数.
如 MOV CL,04
SHL AX,CL

四、串指令
———————————————————————————————————————
DS:SI 源串段寄存器 :源串变址.
ES:DI 目标串段寄存器:目标串变址.
CX 重复次数计数器.
AL/AX 扫描值.
D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
Z标志 用来控制扫描或比较操作的结束.
MOVS 串传送.
( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
CMPS 串比较.
( CMPSB 比较字符. CMPSW 比较字. )
SCAS 串扫描.
把AL或AX的内容与目标串作比较,比较结果反映在标志位.
LODS 装入串.
把源串中的元素(字或字节)逐一装入AL或AX中.
( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )
STOS 保存串.
是LODS的逆过程.
REP 当CX/ECX0时重复.
REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX0时重复.
REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX0时重复.
REPC 当CF=1且CX/ECX0时重复.
REPNC 当CF=0且CX/ECX0时重复.

五、程序转移指令
———————————————————————————————————————

1>无条件转移指令 (长转移)
JMP 无条件转移指令
CALL 过程调用
RET/RETF过程返回.

2>条件转移指令 (短转移,-128到+127的距离内)
( 当且仅当(SF XOR OF)=1时,OP1<OP2 )
JA/JNBE 不小于或不等于时转移.
JAE/JNB 大于或等于转移.
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.
以上四条,测试无符号整数运算的结果(标志C和Z).
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.
以上四条,测试带符号整数运算的结果(标志S,O和Z).
JE/JZ 等于转移.
JNE/JNZ 不等于时转移.
JC 有进位时转移.
JNC 无进位时转移.
JNO 不溢出时转移.
JNP/JPO 奇偶性为奇数时转移.
JNS 符号位为 "0" 时转移.
JO 溢出转移.
JP/JPE 奇偶性为偶数时转移.
JS 符号位为 "1" 时转移.
3>循环控制指令(短转移)
LOOP CX不为零时循环.
LOOPE/LOOPZ CX不为零且标志Z=1时循环.
LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
JCXZ CX为零时转移.
JECXZ ECX为零时转移.
4>中断指令
INT 中断指令
INTO 溢出中断
IRET 中断返回
5>处理器控制指令
HLT 处理器暂停, 直到出现中断或复位信号才继续.
WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.
ESC 转换到外处理器.
LOCK 封锁总线.
NOP 空操作.
STC 置进位标志位.
CLC 清进位标志位.
CMC 进位标志取反.
STD 置方向标志位.
CLD 清方向标志位.
STI 置中断允许位.
CLI 清中断允许位.

六、伪指令
———————————————————————————————————————
DW 定义字(2字节).
PROC 定义过程.
ENDP 过程结束.
SEGMENT 定义段.
ASSUME 建立段寄存器寻址.
ENDS 段结束.
END 程序结束.


汇编语言中,cmp指令怎么用?比如cmp ax,bx ax大于bx怎么跳转,小于又怎么跳,等于呢?

汇编语言中,cmp指令怎么用?比如cmp ax,bx ax大于bx怎么跳转,小于又怎么跳,等于呢?

CMP OPR1 , OPR2指令只是对操作数OPR1 , OPR2之间运算比较,不保存结果。指令本身不进行跳转,只是根据结果设置相关的条件标志位(SF、ZF、CF、OF),CMP指令后往往跟着条件转移指令,实现根据比较的结果产生不同的程序分支的功能。 格式:CMP OPR1 , OPR2. 执行操作:(OPR1)-(OPR2) 功能:该指令与SUB指令一样执行减法的操作,但它并不保存运算结果,只是根据结果设置相关的条件标志位(SF、ZF、CF、OF)。CMP指令后往往跟着条件转移指令,实现根据比较的结果产生不同的程序分支的功能。 扩展资料: 跳转相关的条件跳转指令: 1、JA/JNBE DEST指令:转移条件是CF=0 AND ZF=0,含义是无符号数A>B,英文表示是JMP above (not below or equal)。 2、JAE/JNB DEST指令:转移条件是CF=0,含义是无符号数A≥B,英文表示是JMP above or equal (not below )。 3、JB/JNAE DEST指令:转移条件是CF=1,含义是无符号数A<B,英文表示是JMP blow (not above or equal)。 4、JBE/JNA DEST指令:转移条件是CF=1 OR ZF=1,含义是无符号数A≤B,英文表示是JMP blow or equal (not above)。 参考资料来源:百度百科-CMP指令 参考资料来源:百度百科-条件转移指令

汇编语言指令大全,要详细的 !!!!

一、数据位传送指令: 1、MOV C, bit ;bit 可直接寻址位 C←(bit) 2、MOV bit,C ;C 进位位 (bit) ← C 二、位变量修改指令: 1、CLR C ; 将C=0 2、CLR bit 3、CPL C ; 将C求反再存入C 4、CPL bit ; 将bit求反再存入bit 5、SETB C ; 将C=1 6、SETB bit ; (bit) ← 1 三、位变量逻辑指令: ANL C, bit ANL C, bit ORL C, bit ORL C, bit 延展阅读: 汇编指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。 通用数据传送指令: 1、MOV 传送字或字节; 2、MOVSX 先符号扩展,再传送; 3、MOVZX 先零扩展,再传送; 4、PUSH 把字压入堆栈; 5、POP 把字弹出堆栈; 6、PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈; 7、POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈; 8、PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈; 9、POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈; 10、BSWAP 交换32位寄存器里字节的顺序; 11、XCHG 交换字或字节( 至少有一个操作数为寄存器,段寄存器不可作为操作数); 12、CMPXCHG 比较并交换操作数( 第二个操作数必须为累加器AL/AX/EAX ); 13、XADD 先交换再累加( 结果在第一个操作数里 ); 14、XLAT 字节查表转换; 15、BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即0-FFH); 16、返回 AL 为查表结果。( [BX+AL]->AL )

求汇编语言指令:IN 和OUT的实例????

端口是主机与外设进行数据交换的。(外设接口电路有专用于数据交互的寄存器。为了与CPU中的寄存器相区别,称之为“端口”)。端口有数据端口,状态端口和控制端口3种。

PC机给予每一个端口分配了一个地址(称为端口号),形成一个独立于内存空间的I/O地址空间。在8086/8088中,端口地址的范围是0000至FFFF。

CPU对外设的操作通过专门的端口读写指令来完成。读端口用IN指令,写端口用OUT指令。

——————————————————————————————————————————

IN ACC,PORT;从端口PORT读取数据到ACC;

PORT可以是立即数,也可以是DX。

ACC为AL时,从PORT读取1字节数据到AL
ACC为AX时,从PORT读取2字节数据到AX

——————————

OUT PORT,ACC;将ACC的数据写入端口PORT;

——————————

例子:

IN AL,21H;表示从21H端口读取一字节数据到AL

IN AX,21H;表示从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AH

MOV DX,379H
IN AL,DX ;从端口379H读取1字节到AL
—————
OUT 21H,AL;将AL的值写入21H端口
OUT 21H,AX;将AX的值写入端口地址21H开始的连续两个字节。(port[21H]=AL,port[22h]=AH)

MOV DX,378H
OUT DX,AX ;将AH和AL分别写入端口379H和378H


求汇编语言指令集

应该是根据不同的芯片,不同的生产产家有不同的指令集。


求汇编语言的高手

DATAS SEGMENT
// 前面的DATAS只是一个标记,你喜欢的换可以换成别的字符,例如A_DATA
// SEGMENT用于表示段的定义,注意后面有ENDS
// 这里指数据段的定义,也就是PE文件中常见的.data

STRING DB 13,10,'Hello World!',13,10,'$'
// STRING 表示字符串,DB表示数据类型,一般字符串都是字节行
//13,10表示换行,也就是十六进制0Dh,0Ah
// $ 表示字符串的结束,一般字符串的结束位置会有一个0

DATAS ENDS
// ENDS表示这个段定义结束,


CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
// ASSUME 用来将声明的段与寄存器联系起来,这样数据才能在内存中使用,

START:
//START 表示代码从这里开始执行,START可以换成别的字符,例如Begin,但是后面的要对应

MOV AX,DATAS
// 将数据段的地址传入AX寄存器中

MOV DS,AX
// 再将AX中数据段的地址,传入DS中[DS段,也就是常用的数据段的段寄存器]
//不能MOV DS,DATAS,如果不知道,说明自己还需要学习

LEA DX,STRING
//将刚才定义的字符串的地址传入DX寄存器中

// DOS功能号
MOV AH,9
INT 21H

// DOS功能号
MOV AH,4CH
INT 21H
CODES ENDS
END START
// 注意前面的代码开始处使用的是 START: 所以END START


汇编伪指令ORG是干什么用的?

汇编伪指令ORG是干什么用的?

汇编伪指令ORG作用是定义程序或数据块的起始地址。 指示此语句后面的程序或数据块以 nn 为起始地址连续存放在程序存储器中。 在汇编语言源程序的开始,通常都用一条ORG伪指令来实现规定程序的起始地址。ORG 伪指令规定了程序的起始地址从 2000H 开始,即该程序的第一条指令“MOVA, 20H”从地址 2000H 开始存放。如果不用ORG规定则汇编得到的目标程序将从0000H开始。 扩展资料: 一般指令是在执行阶段发挥作用的,由CPU(Intel、AMD等)来执行。而汇编伪指令ORG在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。 汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充。

汇编中的ORG是什么意思?

汇编中的ORG是什么意思?

汇编伪指令ORG作用是定义程序或数据块的起始地址,指示此语句后面的程序或数据块以nn为起始地址连续存放在程序存储器中。 ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。 ORG数值表达式伪指令的作用是:告诉汇编程序,本伪指令下面的内存变量从该“数值表达式”所指定的地址开始分配。汇编语言提供了一个特殊的符号“$”来引用偏移量计数器的值。 扩展资料: ORG是类别顶级域名,.ORG域名与COM和.NET同是国际最广泛流行的通用域名格式。通常,非盈利组织以及工业标准组织会采用此域名后缀。在访问网络或收发电子邮件时,会用到顶级域名以及二级域名。 VeriSign是世界最大的注册机构,是.com、.net和.org等顶级域名的所有者。 ORG---适用于各类组织机构,包括非盈利团体。 ORG域名任何人都可注册。 参考资料来源:百度百科-org

汇编程序的开头第二个org指令的作用?

第二条是控制汇编时将MOV C,P0.0从0030H处开始存放。
之所以AJMP MAIN和MOV C,P0.0没有挨着存放,是因为单片机的中断入口地址需要占用0003H\000BH\0013H\001BH\0023H\等,还要看你的单片机有几个中断源。


汇编中的“ORG”是什么意思?

org有组织、团体的意思。ORG,在汇编语言中也是一条指令,其作用是告诉汇编程序,在开始执行的时候,将某段机器语言装载到内存中的哪个地址。 1、汇编语言 ORG,在汇编语言中是一条指令。其作用是告诉汇编程序,在开始执行的时候,将某段机器语言装载到内存中的哪个地址。如果没有它,有些指令就不能正确地翻译和执行。由于这条指令不是机器语言中的直接指令,所以又被称之为伪指令。 2、定义 ORG是Origin的缩写:起始地址源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。

汇编语言中伪指令org

org指定绝对地址的好处是,维护代码的时候不必再行计算相应代码被安排的地址。换句话说,如果你接手一份代码的时候,尚未完全了解硬件平台,未必清楚它的中断向量表大小,如果没有org指定主程序入口地址,你又如何能快速的判断呢

举例说,你的“一般的 org 2000H;ajmp main;org 2013H;ajmp Int_ADC......”
实际上是指 ajmp main这条指令被放在rom的0x2000,ajmp Int_ADC这条指令被放在0x2013,而并不是说“main函数从0x2000开始、Int_ADC函数从0x2013开始”,所以你不必担心。只需要确保一条ajmp指令的长度不要大于0x13就没有问题(当然不会大于,64位系统的jmp也只有5字节)
如果程序强行指定那两个函数的入口地址,是这样写的:

org 2000H
main:
xxx
xxx
...

org 2013H
Int_ADC:
xxx
xxx

如果是这样写的,那么就表示main被强制指定到0x2000,Int_ADC被强制指定到0x2013,那么如果main后面的代码多于0x13字节,就会出问题了。


怎么运行汇编语言?

汇编语言源程序运行方法:
1、找到一段起始地址为sa:0000(即起始地址的偏移地址为0)的容量足够的空闲内存区。
2、在这段内存区的前256个字节中,创建一个称为程序段前缀(psp)的数据区,dos利用psp来和被加载程序进行通信。
3、从这段内存区的256字节处开始(在psp的后面),将程序装入,程序的地址被设为sa+10h:0;空闲内存区从sa:0开始,0~255字节为psp,从256字节处开始存放程序,为更好地区分psp和程序,dos将划分到不同的段中,如下这样的地址安排:
空闲内存区:sa:0
psp区:sa:0
程序区:sa+10h:0
注意:psp区和程序区虽然物理地址连续,却有不同的段地址。
4、将该内存区的段地址(sa)存入ds中,初始化其它相关寄存器后,设置cs:ip指向程序的入口(sa+10h:0)。


汇编语言中,串操作指令LODSB/LODSW怎么用?

这是块装入指令,把SI指向的存储单元读入累加器,LODSB就读入AL,LODSW就读入AX中,然后SI自动增加或减小1或2.
块装入指令常常用来对数组或字符串中的元素逐个进行处理.例如,假设以下的array为程序中定义的数组,items为数组长度,那么如下方法遍历此数组.
xor di,di
lea si,array
cld
c50:
lodsd
inc di
cmp di,items
jbe c50


protues运行时如何编辑汇编语言指令

ptoteus自带一编辑器,可以编辑汇编语言。很好用,不用像keil那样要诸多设置。
方法:
1.菜单\source\Add/Remove Source files
2.跳出Add/Remove Source Code Files 窗口,在Source Code Filename 中按New按钮
3.在合适的一个文件夹下,建 一个.asm文件 。如test1.asm,这个文件上名就出现在Source Code Filename。按OK
4.菜单\source最后一条就多了test1.asm
5.单击test1.asm,跳出proteus自带的编辑器,你就可以在里面编辑test1.asm汇编文件了
编加好后,可以用proteus编译、调试和仿真。完全可以不用keil的。如何编译,可以再找我。


汇编语言中的指令应该在计算机的什么地方编写,如何运行

softice,一款不错的软件


STM32有多少条汇编指令,都是什么怎么用?

1、arm都是精简指令集,所有的指令(除stm、ldm外)都是单周期指令。
2、汇编语言输出只需要1条指令,但需要输出的数据通常要先存到特殊功能寄存器中
3、c语言在编译的时候,有可能将一条语句反汇编成多条汇编指令。根据复杂不同,生成的汇编数量也不同。无法统计。


汇编语言中一共有多少词汇 命令

大约50多条,但是实际机器语言大约100多条,这是8086得,其他的更多,如386


汇编语言每个指令的字节数是多少?

有一段程序:内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0--B8H 00H 00H 共三字节
1000:3 e8 01 00 call s---也是三字节
1000:6 40 inc ax---仅有40H一个字节
1000:7 58 s:pop ax--也是一字节
-------------------------------
是不是看它的机器码,两位为一个字节?--是的。
怎么去算它的8位或是16位位移量?-- 一般不用人工计算,可由编译软件自动计算。


汇编语言中,一条指令占多少存储空间?

不同的机型那是不一样的,一般常是一个字节到三个字节,如是大机器那可还要长,你可完全不用关心它,因相比任何语言在同等功能下它都是占字节数最少的。你就放心用的就是了。


几个汇编的问题:1.8086汇编语言指令由几部分组成?各部分的作用是什么?

1.8086汇编语言指令由标号、操作码、操作数和注释组成,其中标号和注释可以省略,操作码指出指令要过盛的功能,操作数指出完成的对象.
2.变量和标号的区别是变量由伪指令定义,标号是指令前面的符号,变量也伪指令定义符之间由空格分隔,标号与指令助词符之间由冒号分隔。
3.开发汇编语言源程序的主要步骤有分析问题、确定算法、画流程图、写代码、调试。
4.汇编语言源程序的一般结构为:
;程序模板

SSEG SEGMENT PARA STACK 'stack'
dw 100h dup(0) ;初始化堆栈大小为100
SSEG ENDS

DSEG SEGMENT
;数据段:在此处添加程序所需的数据
DSEG ENDS

ESEG SEGMENT
;附加段:在此处添加程序所需的数据
ESEG ENDS

CSEG SEGMENT
assume cs:CSEG, ds:DSEG, es:ESEG, ss:SSEG



MAIN PROC FAR ;主程序入口

mov ax, dseg
mov ds, ax
mov ax,eseg
mov es, ax


;此处添加主程序代码

;按任意键退出
mov ah,1
int 21h

mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP

CSEG ENDS

END MAIN
5.说明写列语句所分配的存储空间及初始化的数据值.
(1)BYTE_VAR DB 'BYTE',21,-42H,3DUP(0,?,2DUP(2,3),?)
为变量BYTE_VAR分配了27个字节空间,初始化的数据值依次为: 42H,59H,54H,45H,15H,BEH,00H,00H,02H,03H,02H,03H,00H,00H,00H,02H,03H,02H,03H,00H,00H,00H,02H,03H,02H,03H,00H
(2)WORD_VAR DW 5DUP(4,2,0),?,-8,'BY','TE',256H
为变量WORD_VAR定义了20个字空间,初始化的数据值依次为:
04H,00H,02H,00H,00H,00H,04H,00H,02H,00H,00H,00H,04H,00H,02H,00H,00H,00H,00H,00H,F8H,FFH,59H,42H,45H,54H,56H,02H


汇编伪指令

对应的伪指令
nasm:'RESB', 'RESW', 'RESD', 'RESQ', 'REST'
masm: 'DB', 'DW', 'DD', 'DQ', ‘DT’


nasm汇编语言编译错误

第28行:无效的操作数类型,也就是说0x1fe-$这句是有错误的,没看懂你这个程序是干嘛- -不知道怎么改,不好意思了


(汇编语言编写程序)将指针p指向的字符串中的字符逐个复制到指针b指向的字符串中,并且每4个字符后加一个

void copy(char *b,char *p) { int edisav,esisav; __asm{ mov edisav,edi mov esisav,esi mov esi,p mov edi,b mov ecx,4 h1: mov al,[esi] mov [edi],al cmp al,0 jz h2 inc esi inc edi loop h1 mov byte ptr [edi],20h inc edi mov ecx,4 jmp h1 h2: mov edi,edisav mov esi,esisav } }


org 属于什么文件类型?

  org是游戏系统里自己调用的文件,一般来说除了本游戏,是无法另外打开的。

  ORG,在汇编语言中是一条指令。其作用是告诉汇编程序,在开始执行的时候,将某段机器语言装载到内存中的哪个地址。如果没有它,有些指令就不能正确地翻译和执行。由于这条指令不是机器语言中的直接指令,所以又被称之为伪指令。
  另外,某些指令符号的含义也随之变化。
  例如::RESB 0x1fe-$
  这条指令的含义是从现在开始,填写0x00,直到0x001fe.
  而有了ORG指令后,那个美元符"$"的含义也随之变化。它不再是指输出文件的第几个字节,而是代表将要读入的的内存地址。
  ORG是Origin的缩写:起始地址源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。


汇编中的JMP指令,详细用法?

无条件的转移到指令指定的地址去执行从该地址开始的命令。指令必须指定转移的目标地址(或称转向地址)。 JMP指令不影响条件码。

计算机汇编语言中的一种跳转指令.当需要分支程序时,散转程序有时可以帮我们实现。使用指令JMP 可实现多分支转移。它是根据某种输入或运算的结果,分别转向各个处理程序段取执行程序。


汇编语言NOP指令的用法

nop--空语句的作用:
1、nop指令执行时花去一个时钟周期,所以可用把它用在延时程序中作为循环体,用以估计一个延时时间;
2、用于程序指令的对齐,比如字对齐--以便于反汇编时容易读懂。


汇编语言指令JG与JGE的用法区别

汇编语言指令JG与JGE的用法区别

一、功能不同 1、JG: 大于转移指令。 2、JGE: 大于或等于转移指令。 二、语法不同 1、JG:JG 前>后 Jump if greater。 2、JGE:JGE 前>=后 Jump if greater or equal。 三、用处不同 1、JG:用于对比寄存器中两个对象的大小。 2、JGE:用于对比内存中两个对象的大小关系。 参考资料来源:百度百科-汇编指令

汇编语言 CMP指令用法

汇编语言 CMP指令用法

语法:cmp [-c[v][-i ][--help][第一个文件][第二个文件]。 参数用法: -c或–print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。 -i或–ignore-initial=  指定一个数目。 -l或–verbose  标示出所有不一样的地方。 -s或–quiet或–silent  不显示错误信息。 -v或–version  显示版本信息。 –help  在线帮助。 扩展资料: CMP控制转移指令类型指令说明 无条件转移指令 JMP(段间和段内转移) 条件转移指令 JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移) 循环指令 LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令) 子程序指令 CALL(调用指令)、RET(返回指令) 中断指令INT(中断)、INTO(如溢出则中断)、RIET(从中断返回) 处理机控制指令: 处理机控制指令类型指令说明 标志处理指令 CLC(进位位置0指令)、CMC(进位位求反指令)、STC(进位位置为1指令)、CLD(方向标志置1指令)、STD(方向标志位置1指令)、CLI(中断标志置0指令)、STI(中断标志置1指令) 其他处理机控制指令 NOP(无操作)、HLT(停机)、WAIT(等待)、ESC(换码)

查看全部
收到3877个赞