汇编基本指令全解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JRNS ADR;当S=0时,跳转到ADR,ADR=原PC值十0FFSET
3.单字、双操作数指令 基本指令
ADD DR,SR; DR←DR十SR SUB DR,SR; DR←DR―SR AND DR,SR; DR←DR and SR CMP DR,SR; DR―SR X0R DR,SR; DR←DR xor SR TEST DR,SR; DR and SR 0R DR,SR; DR4←DR 0r SR MVRR DR,SR; DR←SR LDRR DR,[SR]; DR←[SR] STRR [DR],SR; [DR]4←SR
;输出R0低位字节内容到显示器屏幕
;调用子程序 ;转移指令,转移地址为2040
;以下是一个子程序 2050: MVRD R1,20 2051: ADD R0,R1 2052: 0UT 80 2053: RET ;修改输入的字符的编码 ;把修改过的字符输出到显示器屏幕 ;子程序返回指令
扩展指令 ADC DR,SR; DR←DR十SR十C SBB DR,SR; DR←DR←SR←C
4.双字、单操作数指令 基本指令 JMPA ADR; 无条件跳转到地址ADR CALA ADR; 调用首地址为ADR的于程序
5.双字、双操作数指令 基本指令 MVRD DR,DATA; DR←DATA 扩展指令 LDRA DR,[ADR]; DR←[ADR] STRA [ADR],SR; [ADR]←SR LDRX DR,0FFSET[SR]; DR←[0FFSET十SR] STRX DR,0FFSET[SR]; [0FFSET十SR]←[DR]
• 2.单字、单操作数指令
• 基本指令 DEC DR; DR←DR―1 1NC DR; DR←DR十1 SHL DR; DR逻辑左移,最低位补0,最高位移入C SHR DR; DR逻辑右移,最高位补0,最低位移入C JR ADR; 无条件跳转到ADR,ADR=原PC值十0FFSET JRC ADR; 当C=1时,跳转到ADR,ADR=原PC值+0FFSET JRNC ADR;当C=0时,跳转到ADR,ADR=原PC值+0FFSET JRZ ADR; 当Z=1时,跳转到ADR,ADR=原PC值+0FFSET JRNZ ADR; 当Z=0时,跳转到ADR,ADR=原PC值十0FFSET IN I/0 P0RT; R0←[I/0 P0RT],从外设I/0 P0RT端口读人数据到R0 0UT I/0 P0RT;[I/0 P0RTl←R0,将R0中的数据写入外设I/0 P0RT端
例3.2 把字符“A” ―“F”写到内存的2040―2045几个单元, 之后再读出来并显示到屏幕上。 2020: MVRD R3,06 ;给出写内存操作的次数 2022: MVRD R2,203F 2024: MVRD R1,40 2026: INC R2 ;给出写内存操作的内存地址 2027: INC R1 ;给出写内存操作的数据内容 2028: STRR[R2],R1 2029: LDRR R0,[R2] ;读出内存单元的数据到R0寄存器 202A:0UT 80 202B:IN 8l 202C:SHR R0 202D:JRNC 202B 202E:DEC R3 ;检查6次写内存操作是否完成 202F:JRNZ 2026 ;末完则开始下←次写内存操作 2030:RET ;程序结束
口
PUSH SR; SR人栈 P0P DR; 弹出栈顶数据送DR
(3)扩展指令
RCL DR; DR与C循环左移,C移人最低位,最高位移入C RCR DR; DR与C循环右移,C移人最高位,最低位移人C
百度文库
ASR
DR; DR算术右移,最高位保持不变,最低位移人C
DR求反,即DR←/DR
N0T DR;
JMPR SR; 无条件跳转到SR指向的地址 CALR SR; 调用SR指向的子程序 JRS ADR; 当S=l时,跳转到ADR,ADR=原PC值十0FFSET
例3.3 从键盘输入字符并送到显示器屏幕显示。 利用子程序将大写英文字母变为小写并将其显示出来。 2040: IN 81 2041: SHR R0 2042: SHR R0 2043: JRNC 2040 2044: IN 80 2045: 0UT 80 2046: PUSH R0 2047: IN 8l 2048: SHR R0 2049: IRNC 2047 204A: P0P R0 204B: CALA 2050 204D: JMPA 2040 204A: RET ;检查有无敲击过键盘上的一个键
16位教学计算机的简单汇编程序设计举例 例3.1 在显示器屏幕上循环显示95个可打印ASCII字符。 2000: 2002: 2004: 2005: 2006: 2007: 2008: 2009: 200A: 200B: 200C: 200B: 200F: MVRD R1,7E MVRD R0,20 0UT 80 PUSH R0 IN 81 SHR R0 JRNC 2006 P0P R0 CMP R0,R1 JRZ 2000 INC R0 JR 2004 RET
;向寄存器传送直接数
;通过串行接口输出R0低位字节内容 ;保存R0寄存器的内容到堆栈中 ;读串行接口的状态寄存器的内容 ;R0寄存器的内容右移←位 ;当标志位C不是l时就转移到2006地址 ;从堆栈中恢复R0寄存器的原内容 ;相同则标志位z=1 ;当标志位z为1时就转移到2000地址 ;把R0寄存器的内容增加l ;无条件转移指令,转移到2004地址 ;子程序返回指令
16位机根据指令字长、操作数不同可划分为如下 5种指令格式: 1.单字、无操作数指令 基本指令 PSHF; 状态标志(C、Z、V、S、Pl、P0)入栈 P0PF; 弹出栈顶数据送状态标志寄存器 RET; 子程序返回 扩展指令 CLC; 清进位标志位C=0 STC; 置进位标志位C=l EI; 开中断,置中断允许位INTE=1 DI; 关中断,置中断允许位INTE=0 IRKTl 中断返回