Mac和PC的区别到底在哪

Mac和PC的区别到底在哪,第1张

第一,mac机搭载的mac os系统效率高,跟win没有比的意义。
第二,乔帮主对美学很有研究,苹果的东西都很好看。
第三,mac os系统软件不少,中文不多,mac在中国用户几百万,全世界也就千来万不到,win在中国是按多少亿计算,没法比,当然软件少,但mac所拥有的软件能满足日常需求,QQ,Q拼音,搜狗拼音,迅雷,电驴,chrome,firefox都有,
第三,你说配置普遍不高可不对,最好配imac能玩极品16全特效,pc能开的不多(alinware基本都能开,你可以研究下他的价格)
第四,mac很吸引人的一点就是它拥有很好的显卡,很多时候单买那显卡不一定比买mac便宜,所以mac也是静态制图的首选利器。

兄弟,我也不会啊,我给你个汇编指令的初级教程吧,你看下自己就可以解释了
第一章 8086汇编指令
注:AX,BX,CX,EAX,EBX,ECX这些都是CPU用来存储数据的地方。
一、数据传输指令
作用:它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据
1 通用数据传送指令
MOV 传送字或字节
MOVSX 先符号扩展,再传送
MOVZX 先零扩展,再传送
PUSH 把字压入堆栈
POP 把字d出堆栈
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次d出堆栈
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次d出堆栈
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/ECX<>0时重复
REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复
REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复
REPC 当CF=1且CX/ECX<>0时重复
REPNC 当CF=0且CX/ECX<>0时重复
五、程序转移指令
1>无条件转移指令 (长转移)
JMP 无条件转移指令
CALL 过程调用
RET/RETF过程返回
2>条件转移指令 (短转移,-128到+127的距离内)
( 当且仅当(SF XOR OF)=1时,OP1 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 程序结束

当然不是所有的指令都能用的上的,我在这里全部写出来是为了让大家认识一下,方便大家以后的学习,我归纳了一下常用的指令,这些指令大家一定要熟练掌握才可以啊。
MOV 数据传送指令
PUSH,POP 堆栈指令
CMP 比较指令
LEA 取地址指令
XOR 异或指令

ATX中塔机箱「月光宝盒T20」 CPU限高170㎜支持猫头鹰D15限高,固态「三星970Evo plus 500G」,硬盘「希捷酷鱼2TB ST2000DM008」,电源「振华 冰山金蝶GX550」

IOY0 EQU 0D400H ;片选IOY0端口始地址
IOY1 EQU 0D440H ;片选IOY1端口始地址
IOY2 EQU 0D480H ;片选IOY2端口始地址
IOY3 EQU 0D4C0H ;片选IOY3端口始地址
;
ADC0809 EQU IOY0+00H ;ADC0809端口地址
PA55 EQU IOY1+00H ;8255的A口地址
PB55 EQU IOY1+04H ;8255的B口地址
PC55 EQU IOY1+08H ;8255的C口地址
PCTL EQU IOY1+0CH ;8255的控制寄存器地址
DAC0832 EQU IOY2+00H ;DAC0832端口地址
TIMER0 EQU IOY3+00H ;8254计数器0端口地址
TIMER1 EQU IOY3+04H ;8254计数器1端口地址
TIMER2 EQU IOY3+08H ;8254计数器2端口地址
TCTL EQU IOY3+0CH ;8254控制寄存器端口地址

STACK1 SEGMENT STACK
DW 256 DUP()
STACK1 ENDS
DATA SEGMENT
STR1 DB 'Please input password:',0AH,0DH,'$'
STR2 DB 'The password is not right !!!Please try again!!!',0AH,0DH,'$'
STR3 DB 'Welcome to the signal creat machine',0AH,0DH,'Loading ADC0809',0AH,0DH,'$'
STR4 DB 'The passward is right',0AH,0DH,'$'
DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;7段数码管的段位值
STABLE DB 80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H,0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH,0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH,0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80H,7FH,73H,67H,5AH,4FH,43H,38H,2EH,25H,1DH,15H,0FH,09H,05H,02H,00H,00H,02H,05H,09H,0FH,15H,1DH,25H,2EH,38H,43H,4FH,5AH,67H,73H,7FH
PASSWORD DB 41H,42H,43H,44H ;预设密码
GAO DB 1 DUP () ;预留显示十位
DIW DB 1 DUP () ;预留显示个位
PW DB 4 DUP () ;密码预留
YU DB 20 DUP () ;预留20个空间存放数据
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX

CALL CLK ;ADC0809 CLK输入
MOV DX,PCTL ;初始化8255工作方式
MOV AL,88H ;1000 1000方式0,A口,B口输出,C口高四位输入
OUT DX,AL ;

L0: CALL DIS
MOV DX,OFFSET STR1 ;显示提示信息
MOV AH,9
INT 21H
CALL DIS
;识别密码
L1: MOV CX,4
MOV SI,OFFSET PW
L: MOV AH,01H ;输入密码
INT 21H
MOV [SI],AL
INC SI
CMP AL,45H ;检测有无E
JZ E
LOOP L

MOV CX,4
MOV SI,OFFSET PASSWORD;取PASSWORD的偏移地址
MOV DI,OFFSET PW
TE: MOV AL,[DI]
CMP AL,[SI]
JNE TE1
INC DI
INC SI
LOOP TE
JMP Q
TE1: MOV DX,OFFSET STR2 ;显示密码错误
MOV AH,9D
INT 21H
JMP L0
E: JMP QUIT
;启动ADC0809的INO
Q: MOV DX,OFFSET STR4
MOV AH,09H
INT 21H
MOV DX, OFFSET STR3 ;显示提示信息
MOV AH,09H
INT 21H

; MOV AH,00H ;将AH清零用于加法
; MOV CX,20D
L2: MOV DX,ADC0809 ;启动0809的IN0
OUT DX,AL
L3: CALL DALLY
;读取EOC的值
MOV DX,PC55
IN AL,DX ;读C口的值
TEST AL,80H ;检测出C7的值是否为1
JZ L3 ;C7不为1则跳到L3
;读取0809IN0的值
CALL SIN
JMP L0

MOV DX,ADC0809 ;读取0809IN0的值
IN AL,DX
; ADD AH,BL
; LOOP L2 ;求20次数据的和
;
; MOV AL,AH
; MOV BL,20D
; DIV BL ;求采集数据20次的平均值(修改)
; MOV BH,AL
MOV BL,AL
MOV CL,04H
SHR AL,CL ;取出十位
MOV GAO,AL ;存十位的值
MOV AL,BL
AND AL,0FH ;取出个位
MOV DIW,AL ;存个位的值
CALL DIS ;调用数码管显示函数
CALL DIS
MOV AL,BL
CMP AL,15H
JL L4
MOV AL,BL
CMP AL,80H
JL L5
MOV AL,BL
CMP AL,0A0H
JL L6
MOV AL,BL
CMP AL,0C0H
JL L7

CALL FANG1K

JMP L0

L4: CALL JIETI
JMP L0
L5: CALL SIN
JMP L0
L6: CALL TIXING
JMP L0
L7: CALL FANG500
JMP L0
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
DIS PROC NEAR ;显示子函数
PUSH AX
PUSH DX
PUSH BX
MOV AL,0EFH ;选通位LED 1110 1111
MOV DX,PA55
OUT DX,AL
MOV SI,OFFSET GAO ;取个位地址
MOV AL,[SI] ;取个位数据
MOV BX,OFFSET DTABLE
AND AX,00FFH
ADD BX,AX
MOV AL,[BX]
MOV DX,PB55
OUT DX,AL
MOV AL,0DFH ;选通个位LED 1101 1111
MOV DX,PA55
OUT DX,AL
MOV SI,OFFSET DIW ;取个位地址
MOV AL,[SI] ;取个位数据
MOV BX,OFFSET DTABLE
AND AX,00FFH
ADD BX,AX
MOV AL,[BX]
MOV DX,PB55
OUT DX,AL
POP BX
POP DX
POP AX
RET
DIS ENDP
CLK PROC NEAR ;方波CLK时钟18432K子程序
;初始化8254计数器0工作在方式3,以十进制计数,初值为100
PUSH DX ;保护现场
PUSH AX ;保护现场
MOV DX,TCTL
MOV AL,17H ;0001 0111B
OUT DX,AL
MOV DX,TIMER0 ;装初值100
MOV AL,100D
OUT DX,AL
POP AX ;恢复现场
POP DX ;恢复现场
RET
CLK ENDP
FANG1K PROC NEAR ;方波1KHz子程序
;初始化8254计数器1工作在方式3,以十进制计数,初值为184
PUSH DX ;保护现场
PUSH AX ;保护现场
MOV DX,TCTL
MOV AL,57H ;0101 0111B
OUT DX,AL
MOV DX,TIMER1
MOV AL,0B8H;184
OUT DX,AL
F: CALL DIS
MOV DL,0FFH ;判断主键盘有无键按下
MOV AH,6
INT 21H
JZ F

POP AX ;恢复现场
POP DX ;恢复现场
RET
FANG1K ENDP
FANG500 PROC NEAR ;方波500Hz子程序
;初始化8254计数器1工作在方式3,以十进制计数,初值为368
PUSH DX ;保护现场
PUSH AX ;保护现场
MOV DX,TCTL
MOV AL,77H ;0111 0111B
OUT DX,AL
MOV DX,TIMER1
MOV AL,70H ;368D分高低位写入
OUT DX,AL
MOV AL,01H
OUT DX,AL
F1: CALL DIS
MOV DL,0FFH ;判断主键盘有无键按下
MOV AH,6
INT 21H
JZ F1
POP AX ;恢复现场
POP DX ;恢复现场
RET
FANG500 ENDP
JIETI PROC NEAR ;阶梯波子程序
PUSH DX
PUSH AX
J0: MOV AL,00H;AL=0
J1: MOV DX,DAC0832;AL OUT
OUT DX,AL
ADD AL,33H
CALL DALLY1
CMP AL,0FFH
JNE J1

CALL DIS

MOV DL,0FFH ;判断主键盘有无键按下
MOV AH,6
INT 21H
JZ J0
POP AX
POP DX
RET
JIETI ENDP
SIN PROC NEAR ;正弦波子程序
PUSH AX
PUSH BX
PUSH DX
S0: MOV BX,10H
S1: MOV SI,OFFSET STABLE
MOV CX,64D
S2: MOV AL,[SI]
MOV DX,DAC0832
OUT DX,AL
INC SI
LOOP S2
JMP S1
DEC BX
CMP BX,00H
JNE S1

CALL DIS

MOV DL,0FFH ;判断主键盘有无键按下
MOV AH,6
INT 21H
JZ S0
POP DX
POP BX
POP AX
RET
SIN ENDP
TIXING PROC NEAR ;梯形波子程序
PUSH AX
PUSH DX
PUSH BX
T: MOV BX,10H
MOV AL,00H
MOV DX,DAC0832
OUT DX,AL
T0: MOV AL,33H
T1: MOV DX,DAC0832
OUT DX,AL
INC AL
CMP AL,0FFH
JNE T1
CALL DALLY1
T2: OUT DX,AL
DEC AL
CMP AL,33H
JNE T2

DEC BX
CMP BX,00H
JNE T0

CALL DIS

MOV DL,0FFH ;判断主键盘有无键按下
MOV AH,6
INT 21H
JZ T
POP BX
POP DX
POP AX
RET

TIXING ENDP
;延时子程序

DALLY1 PROC NEAR
PUSH CX
PUSH AX
MOV CX,1000H
D1: MOV AX,0100H
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALLY1 ENDP
DALLY PROC NEAR
PUSH CX
PUSH AX
MOV CX,4000H
D3: MOV AX,0600H
D4: DEC AX
JNZ D4
LOOP D3
POP AX
POP CX
RET
DALLY ENDP
CODE ENDS
END START

DATA SEGMENT
BUFF DB 80 DUP ()
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA SI,BUFF
MOV CX,0
NEXT1:
MOV AH,1
INT 21H
CMP AL,27
JZ DISP
CMP AL,13
JZ DISP
CMP AL,61H
JB NEXT1
CMP AL,7AH
JA NEXT1
MOV [SI],AL
INC SI
INC CX
JMP NEXT1
DISP:
MOV DL,13
MOV AH,2
INT 21H
MOV DL,10
INT 21H
LEA SI,BUFF
NEXT2:
CMP CX,0
JZ TJ
MOV DL,[SI]
SUB DL,20H
MOV AH,2
INT 21H
INC SI
DEC CX
JMP NEXT2
TJ:
MOV AH,1
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
请参考


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/13442457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-07
下一篇 2023-08-07

发表评论

登录后才能评论

评论列表(0条)

保存