永发信息网

8088简单汇编指令

答案:2  悬赏:40  手机版
解决时间 2021-02-19 10:09
8088简单汇编指令
最佳答案
下面的有些不是8088的指令集...但基本都是相通的... 一、数据传送指令
  1.通用数据传送指令
  MOV(Move)传送
  PUSH(Push onto the stack)进栈
  POP(Pop from the stack)出栈
  XCHG(Exchange)交换
  .MOV指令
  格式为: MOV DST,SRC
  执行的操作:(DST)<-(SRC)
  .PUSH进栈指令
  格式为:PUSH SRC
  执行的操作:(SP)<-(SP)-2
  ((SP)+1,(SP))<-(SRC)
  .POP出栈指令
  格式为:POP DST
  执行的操作:(DST)<-((SP+1),(SP))
  (SP)<-(SP)+2
  .XCHG 交换指令
  格式为:XCHG OPR1,OPR2
  执行的操作:(OPR1)<-->(OPR2)
  2.累加器专用传送指令
  IN(Input) 输入
  OUT(Output) 输出
  XLAT(Translate) 换码
  这组指令只限于使用累加器AX或AL传送信息.
  .IN 输入指令
  长格式为: IN AL,PORT(字节)
  IN AX,PORT(字)
  执行的操作: (AL)<-(PORT)(字节)
  (AX)<-(PORT+1,PORT)(字)
  短格式为: IN AL,DX(字节)
  IN AX,DX(字)
  执行的操作: AL<-((DX))(字节)
  AX<-((DX)+1,DX)(字)
  .OUT 输出指令
  长格式为: OUT PORT,AL(字节)
  OUT PORT,AX(字)
  执行的操作: (PORT)<-(AL)(字节)
  (PORT+1,PORT)<-(AX)(字)
  短格式为: OUT DX,AL(字节)
  OUT DX,AX(字)
  执行的操作: ((DX))<-(AL)(字节)
  ((DX)+1,(DX))<-AX(字)
  在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来 传送信息.
  .XLAT 换码指令
  格式为: XLAT OPR
  或: XLAT
  执行的操作:(AL)<-((BX)+(AL))
  3.有效地址送寄存器指令
  LEA(Load effective address)有效地址送寄存器
  LDS(Load DS with Pointer)指针送寄存器和DS
  LES(Load ES with Pointer)指针送寄存器和ES
  .LEA 有效地址送寄存器
  格式为: LEA REG,SRC
  执行的操作:(REG)<-SRC
  指令把源操作数的有效地址送到指定的寄存器中.
  .LDS 指针送寄存器和DS指令
  格式为: LDS REG,SRC
  执行的操作:(REG)<-(SRC)
  (DS)<-(SRC+2)
  把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指令常指定SI寄存器.
  .LES 指针送寄存器和ES指令
  格式为: LES REG,SRC
  执行的操作: (REG)<-(SRC)
  (ES)<-(SRC+2)
  把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指令常指定DI寄存器.
  4.标志寄存器传送指令
  LAHF(Load AH with flags)标志送AH
  SAHF(store AH into flags)AH送标志寄存器
  PUSHF(push the flags) 标志进栈
  POPF(pop the flags) 标志出栈
  .LAHF 标志送AH
  格式为: LAHF
  执行的操作:(AH)<-(PWS的低字节)
  .SAHF AH送标志寄存器
  格式为: SAHF
  执行的操作:(PWS的低字节)<-(AH)
  .PUSHF 标志进栈
  格式为: PUSHF
  执行的操作:(SP)<-(SP)-2
  ((SP)+1,(SP))<-(PSW)
  .POPF 标志出栈
  格式为: POPF
  执行的操作:(PWS)<-((SP)+1,(SP))
  (SP)<-(SP+2)
  二、算术指令
  1.加法指令
  ADD(add)加法
  ADC(add with carry)带进位加法
  INC(increment)加1
  .ADD 加法指令
  格式: ADD DST,SRC
  执行的操作:(DST)<-(SRC)+(DST)
  .ADC 带进位加法指令
  格式: ADC DST,SRC
  执行的操作:(DST)<-(SRC)+(DST)+CF
  .ADD 加1指令
  格式: INC OPR
  执行的操作:(OPR)<-(OPR)+1
  2.减法指令
  SUB(subtract)减法
  SBB(subtract with borrow)带借位减法
  DEC(Decrement)减1
  NEG(Negate)求补
  CMP(Compare)比较
  .SUB 减法指令
  格式: SUB DST,SRC
  执行的操作:(DST)<-(DST)-(SRC)
  .SBB 带借位减法指令
  格式: SBB DST,SRC
  执行的操作:(DST)<-(DST)-(SRC)-CF
  .DEC 减1指令
  格式: DEC OPR
  执行的操作:(OPR)<-(OPR)-1
  .NEG 求补指令
  格式: NEG OPR
  执行的操作:(OPR)<- -(OPR)
  .CMP 比较指令
  格式: CMP OPR1,OPR2
  执行的操作:(OPR1)-(OPR2)
  该指令与SUB指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志西半球.
  3.乘法指令
  MUL(Unsigned Multiple)无符号数乘法
  IMUL(Signed Multiple)带符号数乘法
  .MUL 无符号数乘法指令
  格式: MUL SRC
  执行的操作:
  字节操作数:(AX)<-(AL)*(SRC)
  字操作数:(DX,AX)<-(AX)*(SRC)
  .IMUL 带符号数乘法指令
  格式: IMUL SRC
  执行的操作:与MUL相同,但必须是带符号数,而MUL是无符号数.
  4.除法指令
  DIV(Unsigned divide)无符号数除法
  IDIV(Signed divide)带符号数除法
  CBW(Convert byte to word)字节转换为字
  CWD(Contert word to double word)字转换为双字
  .DIV 无符号数除法指令
  格式: DIV SRC
  执行的操作:
  字节操作:(AL)<-(AX)/(SRC)的商
  (AH)<-(AX)/(SRC)的余数
  字操作: (AX)<-(DX,AX)/(SRC)的商
  (AX)<-(DX,AX)/(SRC)的余数
  .IDIV 带符号数除法指令
  格式: DIV SRC
  执行的操作:与DIV相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号与被除数的符号相同.
  .CBW 字节转换为字指令
  格式: CBW
  执行的操作:AL的内容符号扩展到AH.即如果(AL)的最高有效位为0,则(AH)=00;如(AL)的最高有效位为1,则(AH)=0FFH
  .CWD 字转换为双字指令
  格式: CWD
  执行的操作:AX的内容符号扩展到DX.即如(AX)的最高有效位为0,则(DX)=0;否则(DX)=0FFFFH.
  这两条指令都不影响条件码.
  三、逻辑指令
  1.逻辑运算指令
  AND(and) 逻辑与
  OR(or) 逻辑或
  NOT(not) 逻辑非
  XOR(exclusive or)异或
  TEST(test) 测试
  .AND 逻辑与指令
  格式: AND DST,SRC
  执行的操作:(DST)<-(DST)^(SRC)
  .OR 逻辑或指令
  格式: OR DST,SRC
  执行的操作:(DST)<-(DST)V(SRC)
  .NOT 逻辑非指令
  格式: NOT OPR
  执行的操作:(OPR)<-(OPR)
  .XOR 异或指令
  格式: XOR DST,SRC
  执行的操作:(DST)<-(DST)V(SRC)
  .TEST 测试指令
  格式: TEST OPR1,OPR2
  执行的操作:(DST)^(SRC)
  两个操作数相与的结果不保存,只根据其特征置条件码
  2.移位指令
  SHL(shift logical left) 逻辑左移
  SAL(shift arithmetic left) 算术左移
  SHR(shift logical right) 逻辑右移
  SAR(shift arithmetic right) 算术右移
  ROL(Rotate left) 循环左移
  ROR(Rotate right) 循环右移
  RCL(Rotate left through carry) 带进位循环左移
  RCR(Rotate right through carry) 带进位循环右移
  格式: SHL OPR,CNT(其余的类似)
  其中OPR可以是除立即数以外的任何寻址方式.移位次数由CNT决定,CNT可以是1或CL.
  循环移位指令可以改变操作数中所有位的位置;移位指令则常常用来做乘以2除以2操作.其中算术移位指令适用于带符号数运算,SAL用来乘2,SAR用来除以2;而逻辑移位指令则用来无符号数运算,SHL用来乘2,SHR用来除以2.
  四、串处理指令
  1.与REP相配合工作的MOVS,STOS和LODS指令
  .REP重复串操作直到(CX)=0为上
  格式: REP string primitive
  其中String Primitive可为MOVS,LODS或STOS指令
  执行的操作:
  1)如(CX)=0则退出REP,否则往下执行.
  2)(CX)<-(CX)-1
  3)执行其中的串操作
  4)重复1)~3)
  .MOVS 串传送指令
  格式:可有三种
  MOVS DST,SRC
  MOVSB(字节)
  MOVSW(字)
  其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:
  MOVS ES:BYTE PTR[DI],DS:[SI]
  执行的操作:
  1)((DI))<-((SI))
  2)字节操作:
  (SI)<-(SI)+(或-)1,(DI)<-(DI)+(或-)1
  当方向标志DF=0时用+,当方向标志DF=1时用-
  3)字操作:
  (SI)<-(SI)+(或-)2,(DI)<-(DI)+(或-)2
  当方向标志DF=0时用+,当方向标志DF=1时用-
  该指令不影响条件码.
  .CLD(Clear direction flag)该指令使DF=0,在执行串操作指令时可使地址自动增量;
  .STD(Set direction flag)该指令使DF=1,在执行串操作指令时可使地址自动减量.
  .STOS 存入串指令
  格式: STOS DST
  STOSB(字节)
  STOSW(字)
  执行的操作:
  字节操作:((DI))<-(AL),(DI)<-(DI)+-1
  字操作: ((DI))<-(AX),(DI)<-(DI)+-2
  该指令把AL或AX的内容存入由(DI)指定的附加段的某单元中,并根据DF的值及数据类型修改DI的内容,当它与REP联用时,可把AL或AX的内容存入一个长度为(CX)的缓冲区中.
  .LODS 从串取指令
  格式: LODS SRC
  LODSB
  LODSW
  执行的操作:
  字节操作:(AL)<-((SI)),(SI)<-(SI)+-1
  字操作: (AX)<-((SI)),(SI)<-(SI)+-2
  该指令把由(SI)指定的数据段中某单元的内容送到AL或AX中,并根据方向标志及数据类型修改SI的内容.指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.
  一般说来,该指令不和REP联用.有时缓冲区中的一串字符需要逐次取出来测试时,可使用本指令.
  2.与REPE/REPZ和REPNZ/REPNE联合工作的CMPS和SCAS指令
  .REPE/REPZ 当相等/为零时重复串操作
  格式: REPE(或REPZ) String Primitive
  其中String Primitive可为CMPS或SCAS指令.
  执行的操作:
  1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行
  2)(CX)<-(CX)-1
  3)执行其后的串指令
  4)重复1)~3)
  .REPNE/REPNZ 当不相等/不为零时重复串操作
  格式: REPNE(或REPNZ) String Primitive
  其中String Primitive可为CMPS或SCAS指令
  执行的操作:
  除退出条件(CX=0)或ZF=1外,其他操作与REPE完全相同.
  .CMPS 串比较指令
  格式: CMP SRC,DST
  CMPSB
  CMPSW
  执行的操作:
  1)((SI))-((DI))
  2)字节操作:(SI)<-(SI)+-1,(DI)<-(DI)+-1
  字操作: (SI)<-(SI)+-2,(DI)<-(DI)+-2
  指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS指令的规定相同.
  .SCAS 串扫描指令
  格式: SCAS DST
  SCASB
  SCASW
  执行的操作:
  字节操作:(AL)-((DI)),(DI)<-(DI)+-1
  字操作: (AL)-((DI)),(DI)<-(DI)+-2
  该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存结果,只根据结果置条件码.指令的其他特性和MOVS的规定相同.
全部回答
推荐你看一本很不错的书《IBM-PC汇编语言程序设计》清华大学出版社~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小明学习成绩不错,在班里是个独来独往的人,
三星sch-l829手机为什么装起sd卡下的东西是在
彩之盟快印地址在哪,我要去那里办事
败毒散的组成药物中不包括A.柴胡、前胡B.羌活
男人会介意在一起的女人没钱吗?
陈奕迅有一首粤语歌 歌词今天一个人
大不同百福街店我想知道这个在什么地方
马竞的那个胡安弗兰是皇马青训的那个吗
关于影响个人理财业务的宏观经济状况,下列表
全职猎人,据说漫画版在从贪婪之岛回来见到的
上调1.5个百分点什么意思
南道隘地址在哪,我要去那里办事
人在海里会不会被船撞死或者压死
师傅应该怎么叫徒弟的老婆...
已知y-3与x成正比例函数关系,并且当x=3,y=6
推荐资讯
尚客优快捷酒店无锡高铁东站店地址有知道的么
有趣的宠物名
极品列车时刻表 查询结果中有的显示的是红色
感激一个人送什么花好
中国电信(兴华路营业厅)(兴华中路与文化路交
历史上的西李是谁
做地铁2号线可以到迎春路1070号
(2009年邯郸模拟)科学家将14CO2分别通入培
夏天暴热之后进空调急剧降温会不会脑结冰
公司购买理财产品应计入哪个科目核算
今年7月份开始的,持续3个来月的泰国洪灾,导
制万线/S207(路口)我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?