微机原理与接口技术之指令

简介: 微机原理与接口技术之指令

1.指令

【3-39】以MEM为首地址的内存区域中有10个以非压缩的BCD码形式存放的十进制数,他们的值可能是0~9中的任意一个,现编程序将这10个数顺序显示在屏幕上:

程序代码如下:


LEA SI , MEM ;将MEM的16位偏移地址送到SI(源串偏移地址)

MOV CX , 10 ;设置串长度 10

CLD ; DF清零,使地址指针按增量的方向修改

MOV AH , 02H ;将02H放入寄存器AH,功能号(表示单字符显示输出)

NEXT: LODSB ;取一个BCD码到AL里面

ADD AL, 30H ;将BCD码转换为对应的ASCII码,0的ASCII为30H,所以需要加03H

MOV DL, AL ;将AL里面存的ASCII送到DL

INT 21H ;输出显示

DEC CX ; CX自减1

JNZ NEXT ;若ZF=0则重复

HLT 暂停程序


【3-40】把6000H:1200H单元开始的100个字存储单元的内容清零,可以用串存储指令实现。程序如下:


MOV AX , 6000H ;将6000H传送到AX中

MOV ES , AX ;将AX中的传到附加段ES作为目标串的段地址

MOV DI, 1200H ;DI目标串的偏移地址

MOV CX , 100 ;CX串长度为100

CLD ;DF=0,使地址指针按增量的方向修改

MOV AX , 0 ;将0存入到AX中

REP STOSW ;无条件重复,将AX的内容存放到DI中,直到CX=0,存完为止,这样就实现了清零

HLT ;暂停程序


【3-41】

MOV AX , BX ;将BX的内容送到AX

JMP NEXT ;无条件段内转移,直接转向目标地址NEXT处

ADD CL ,0FH ;不执行将CL的数据与0FH相加后放在CL里面


NEXT: OR CL , 7FH ;无条件转移后,直接执行NEXT后面的语句,将CL与7FH进行或运算后,结果放在CL里面

【3-42】

JMP DWORD PTR[BX]

段间间接转移:将BX作为偏移地址,DS段作为基址地址的物理内存单元的连续四个内存单元的内容送入IP和CS中(低字节内容送入IP,高字节内容送入CS),程序转移到另一个代码段继续执行。

【3-43】在内存的数据段中存放了100个8位带符号数,其首地址位TABLE,试统计其中正元素、负元素和零元素的个数,并分别将个数存入PLUS、MINUS和ZERO这3个单元中。

程序如下:

START:XOR AL , AL ;异或运算将AL清零

MOV PLUS ,AL ;将PLUS单元清零

MOV MINUS ,AL ;将MINUS单元清零

MOV ZERO ,AL ;将ZERO单元清零

LEA SI , TABLE ;取TABLE得偏移指令放入SI

MOV CL , 100 ;表长度送入计数寄存器CL

CLD ; DF清零,使地址指针按增量的方向修改

CHECK: LODSB ;取一个数到AL

OR AL , AL ;将AL中的操作数自身相或,影响标志位

JS X1 ;若为负即:符号标志位SF=1,转X1

JZ X2 ;若为零即:零标志位ZF=1,转X2

INC PLUS ;否则为正,PLUS自加1

JMP NEXT ;无条件转移到NEXT

X1: INC MINUS ;MIUS单元加1

JMP NEXT ; 无条件转移到NEXT

X2: INC ZERO ;ZERO单元加1

NEXT: DEC CL ;CL自减1

JNZ CHECK ;如果不等于零,转到CHECK

HLT 停止

【3-44】在以DATA为首地址的内存数据段中存放有200个16位带符号数,试事找出其中的最大数和最小数的符号数,并分别放在以MAX和MIN为首的内存单元中。

程序如下:

START: LEA SI, DATA ;将DATA的偏移地址送入SI,SI数据段首地址

MOV CX, 200 ;CX数据段长度

CLD ;DF=0,使向地址指针增加的方向修改

LODSW ;取AX一个16位带符号数

MOV MAX, AX ;将该数送MAX

MOV MIN , AX ;将该数送MIN

DEC CX ;CX自减1

NEXT: LODSW ;取下一个16位带符号数

CMP AX,MAX ;与MAX单元内容进行比较

JG LARGER ;若大于则转LARGER

CMP AX,MIN ;否则再与MIN单元内容进行比较

JL SMALL ;若小于MIN的内容则转SMALL

JMP GOON ;否则就转至GOON

LAFGER: MOV MAX ,AX ;MAX- AX

JMP GOON ; 否则就转至GOON

SMALL: MOV MIN ,AX ;MIN–AX

GOON: LOOP NEXT ;CX- 1,若CX!=0则转NEXT

HLT 停止

【3-45】比较两组输人端口的数据是否一致。主端口的首地址为MAIN_P0RT.冗余端口的首地址为REDUNDANT_PORT端口数目均为NUMBER.

程序如下:

MOV DX ,MAIN_PORT ;DX-主端口地址指针

MOV BX ,REDUNDANT_PORT ;BX冗余端口地址指针

MOV CX,NUMBER ;CX-端口数

TOP: IN AX , DX ;从主端口输入一个数据

XCHG AX , BP ;交换两个数据,将输入的数据暂存于BP

INC DX ;DX指针加1

XCHG BX , DX ;交换BX与DX的内容,冗余端口地址指针

IN AX , DX ;从冗余端口输入一个数据

INC DX ;冗余端口地址指针加1

XCHG BX , DX ;原寄存器地址指针

CMP AX , BP ;比较两端口数据

LOOPE TOP ;若两端口数据相等且CX-1!=0,则转向TOP

JNZ PORT_ERROR ;若两端口数据不相等,则转至PORT_ERROR

PORT_ERROR: ….


相关文章
|
芯片 内存技术
第八章 可编程接口芯片及应用【微机原理】1
第八章 可编程接口芯片及应用【微机原理】1
130 0
第八章 可编程接口芯片及应用【微机原理】1
|
芯片
第八章 可编程接口芯片及应用【微机原理】2
第八章 可编程接口芯片及应用【微机原理】2
212 0
|
存储 程序员 芯片
微机原理与接口技术 8086微处理器系统结构详解
本文主要详解8086微处理器系统结构。主要从以下几个方面进行分析与总结:8086 CPU结构、EU与BIU的结构和功能、8086寄存器结构、8086系统时钟与指令周期、周期概念、8086系统时钟、指令周期、总线周期、8086存储器组织、堆栈的概念、存储器组织与I/O结构、存储体与总线的连接、8086的内外部中断、中断向量表。
1346 0
微机原理与接口技术 8086微处理器系统结构详解
|
存储 程序员
《微机原理与接口技术》简答题总结(一)
《微机原理与接口技术》简答题总结
687 0
《微机原理与接口技术》简答题总结(一)
|
6月前
|
传感器 存储 数据处理
汇编语言与接口技术实验报告——单总线温度采集
汇编语言与接口技术实验报告——单总线温度采集
72 0
6 处理器控制指令【微机原理】
6 处理器控制指令【微机原理】
47 0
第四章 80x86指令系统【微机原理】
第四章 80x86指令系统【微机原理】
68 0
|
芯片
第八章 可编程接口芯片及应用【微机原理】3
第八章 可编程接口芯片及应用【微机原理】3
71 0
【微机原理笔记】第 3 章 - 8086/8088的指令系统
【微机原理笔记】第 3 章 - 8086/8088的指令系统
1155 1
|
芯片 内存技术
【微机原理笔记】第 5 章 - 存储器系统与接口
【微机原理笔记】第 5 章 - 存储器系统与接口
258 0