当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

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

更新:04-14 整理:39baobao.com
字体:

[汇编语言指令大全要详细的 !]最佳答案IBM-PC汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交...+阅读

端口是主机与外设进行数据交换的。(外设接口电路有专用于数据交互的寄存器。为了与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

帮忙写一个不少于一百句的汇编语言内容简单附带运行结果急用

计算器汇编原码 PAGE ,132 TITLE CALC CGROUP GROUP CODESEG CODESEG SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CGROUP,DS:CGROUP,ES:CGROUP PUBLIC CALC ORG 100H CALC PROC FAR JMP START ;---------------------------------------------------------------------; ; ; ; DATA AREA ; ; ; ;---------------------------------------------------------------------; DB 'INTERRUPT NUMBER =' INT_NUMBER DB 61h SCREEN_HANDLE DW 0001h MESSAGE DB 'PEMATH is not resident',13,10 MESSAGE_LEN EQU $-MESSAGE TAG DB 'PEMATH' TAG_LEN EQU $-TAG ;---------------------------------------------------------------------; ; ; ; CODE AREA ; ; ; ;---------------------------------------------------------------------; START: ;---------------------------------------------------------------------; ; TEST FOR PRESENCE OF CALCULATOR ; ;---------------------------------------------------------------------; SUB AX,AX MOV ES,AX SUB BH,BH MOV BL,INT_NUMBER SHL BX,1 SHL BX,1 MOV DI,ES:[BX] MOV ES,ES:[BX+2] ADD DI,4 LEA SI,TAG MOV CX,TAG_LEN REPE CMPSB JE CALL_CALC MOV BX,SCREEN_HANDLE MOV CX,MESSAGE_LEN LEA DX,MESSAGE MOV AH,40h INT 21h JMP SHORT CALC_EXIT ;---------------------------------------------------------------------; ; CALL CALCULATOR ; ;---------------------------------------------------------------------; CALL_CALC: MOV AL,INT_NUMBER MOV BYTE PTR INT_CODE,AL DB 0CDh ; INT INT_CODE: DB 00h NOP NOP CALC_EXIT: INT 20h CALC ENDP CODESEG ENDS END CALC

100行的汇编语言程序

dat segmentdata db 10 dup(0)input db 'input:$' output db 'output:$'enter db 0dh,0ah,'$' dat endscod segment assume ds:dat,cs:cod;-----------------------主程序 start: mov ax,dat mov ds,ax ;数据段寄存器赋值 lea si,data ;SI指向DATA数组首单元 mov cl,4ppp: mov bx,0 ;BX清零 lea dx,input ;这三行调用INT 21H中断例程的9号功能输出DS:DX指向的字符串,以'$'结尾 mov ah,9 ;以下代码若有类似的三句,实现功能类似 int 21h ;显示输入提示;-----------------------开始输入十六进制数get: mov ah,1 ;这两行调用INT 21H中断例程1号功能,等待用户输入一个字符,保存入AL中 int 21h ;以下6对代码依次比较输入字符,并跳转到相应操作 cmp al,'*' jz kkk ;输入'*'号,退出程序 cmp al,0dh ;0DH是回车键对应的字符 jz mess ;输入回车,跳出get循环(get循环:实现输入十六进制数并保存到BX的功能) cmp al,30h ;这4行判断是否是'0'~'9' jb get cmp al,39h jbe num cmp al,'A' ;这4行判断是否是'A'~'F' jb get cmp al,'F' jbe big cmp al,'a' ;这4行判断是否是'a'~'f' jb get cmp al,'f' jbe big jmp getnum: ;对数字进行处理 and al,0fh ;al高4位清零,保留低4位 jmp nextbig: ;对大写字母或者小写字母进行处理 sub al,7 and al,0fhnext: shl bx,cl ;BX左移4位 add bl,al ;将数字保存到BL的低4位中 jmp get;----------------------- mess: lea dx,enter mov ah,9 int 21h ;回车、换行 lea dx,output mov ah,9 int 21h ;显示输出提示 mov dx,0 mov ax,bx mov bx,10 ;进制数again: call buf cmp ax,0 ;商如果为0,表示该十六进制数对应的十进制数的每一个数位的值都存入了DATA数组 jnz again mov ah,2 ;INT 21H的2号功能:将DL中保存的ASCII码对应的字符输出ttt: dec si mov dl,[si] ;取数据 int 21h ;显示 cmp si,0 jnz ttt ;判断是否取完DATA数组的所有元素,来控制循环 lea dx,enter mov ah,9 int 21h ;回车、换行 jmp ppp ;开始下一轮输入、转换和输出kkk: mov ah,4ch ;退出程序的操作 int 21h;--------------------子程序;传入参数:BX,进制数10;DX、AX,表示一个32位16进制数;返回值:AX;功能:;1. 将DX、AX表示的16进制数除以10,得到余数(余数在0~9之间,即对应十进制无符号数的个位数字);2. 将其转换为对应字符的ASCII码(即1转换为'1'),并保存到SI指向的DATA数组元素的位置;3. SI指向DATA数组的下一个元素buf proc div bx add dl,30h mov [si],dl mov dl,0 inc si retbuf endpcod ends end start;总结:这段程序实现的功能;1. 十六进制输入一个数,输入回车表示输入结束,输入'*'表示退出程序,保存到寄存器中;2. 十六进制数转换为十进制无符号数,使用了类似于栈的操作的方法;3. 十进制无符号数转换为对应字符的ASCII码(2和3由子程序buf完成);4. ASCII码对应字符的输出的功能

本文地址:https://www.39baobao.com/show/29_49751.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

汇编语言指令大全要详细的最佳答案IBM-PC汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交...

汇编语言程序指令知多少谁能告诉我汇编语言程序指令并带有解释谢谢附表5。2 指令汇编格式 指令类型 指令汇编格式 指令功能简介 传送指令 MOV reg/mem,imm ;dest←src MOV reg/mem/seg,reg MOV reg/seg,mem MOV reg/mem,seg 交换指令 XCHG r...

汇编语言算术运算指令简单写了个两数相加的。 dseg segment num1 db 27H num2 db 45H dseg ends cseg segment assume cs:cseg,ds:dseg begin: mov ax,dseg mov ds,ax mov al,num1 add al,num2 d...

汇编语言有符号乘法指令汇编语言有符号乘法指令大全 MOV(MOVE) 传送指令P28 PUSH 入栈指令P32 POP 出栈指令P33 XCHG(eXCHanG) 交换指令P34 XLAT(TRANSLATE) 换码指令P34 LEA (Load Effective Addr...

结合印欧语系语言和现代汉语的语言实例说明语法的属性语法具有更明显的抽象性、稳固性和民族性。 1、抽象性(概括性):语法规则是抽象的,它具有高度的统领性。一种语言中具体的词汇成员数量巨大,具体的句子数量更是无穷无尽,而语法类别...

简述MCS 51汇编语言指令格式采用助记符表示的汇编语言指令格式如下: 标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由1~8个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必...

汇编语言寄存器寻址急求解析下列传送指令中有语法错误的是这几道题目网上就有答案和解析 , 顺序不一样 一、能够将ax中的内容送到内存0000:0200H处的指令序列是 3 。 1、 mov ds,0 mov bx,200h mov [bx],ax 2、 mov ax,200h mov ds,a...

汇编中的dec指令是什么指令寄存器存储指令。 CPU机器指令的助记符,编译后得到1和0组成的机器码,由CPU读取执行。为了让CPU处理起来更加的具有效率,CPU往往是一边执行指令的同时就在提前读取下面的指令了,...

汇编语言的各种指令的用法汇编语言指令汇编指令汇编语言中使用的一些操作符(如mov,inc,loop)和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编指令,它既不控制机器的操作也...