
汇编语言
algzjh
这个作者很懒,什么都没留下…
展开
-
汇编语言-基础知识
存储容量 1K = 1024 = 2102^{10} (Kilo) 1M = 1024K = 2202^{20} (Mega) 1G = 1024M = 2302^{30} (Giga)1个二进制位:bit (比特) 8个二进制位:Byte (字节) 1Byte = 8bit 2个字节: Word (字) 1Word = 2Byt原创 2017-05-24 06:26:27 · 431 阅读 · 0 评论 -
存储器的管理模式
1、实地址方式下只能访问1MB的内存空间,只能单任务运行。2、在实地址方式下,段地址定义了段起始地址的高16位,并存放在段寄存器中。 逻辑段的起始地址(通常简称为短地址)必须是16的倍数,即最低4位二进制必须全为0。1MB内存最多可分为64K个段,段之间相互重叠,至少可分成16个相互不重叠的段。3、偏移地址描述目的地址在该段中的相对位置,即离段基地址的偏移量,它指示在64KB段内任何一个单元。偏移原创 2017-06-11 21:02:30 · 537 阅读 · 0 评论 -
汇编-将输入的字符串逆序输出
data segment crlf db 0dh,0ah,'$'data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax ;--------------- mov cx,0input: mov ah,01h int 21h cmp al,0dh jz output原创 2017-06-23 13:43:57 · 4839 阅读 · 0 评论 -
汇编-将数据区的字符串逆序输出
data segmentstr db 'Hello World!','$'data endscode segment assume cs:code,ds:datamain proc far mov ax,data mov ds,ax lea si,str mov cx,0LP1: cmp byte ptr [si],'$' je output inc si原创 2017-06-23 15:28:20 · 2028 阅读 · 0 评论 -
汇编-冒泡排序
data segment a dw 1,4,6,7,9,0,3,5data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov cx,8 dec cxLP1: push cx mov dx,0 mov si,0LP2: mov bp,a[si] cmp bp原创 2017-06-23 15:54:17 · 569 阅读 · 0 评论 -
汇编-字符串小写转大写
data segment org 1000h buffer db 'hello ASM!zjh20170623' strlen equ $-buffer org 2000h outstr db strlen dup(?) db '$'data endscode segment assume cs:code,ds:datastart: mov ax,data m原创 2017-06-23 16:08:00 · 1126 阅读 · 0 评论 -
指令格式与寻址方式
1、汇编语言指令的一般格式为: 指令助记符 \; 操作数列表 \; ;注释2、操作数类型和有效地址 (1)操作数包含在指令中,指令的操作数就是操作数本身(立即数),这种操作数成为立即寻址。而且立即数只能作为源操作数。 (2)操作数包含在CPU的某个内部寄存器中。这时指令的操作数是CPU内部寄存器的一个编码,这种操作数寻址方式称为寄存器寻址。 (3)操作数在内存的数据区中。这是指令的操作数部原创 2017-06-11 22:54:24 · 4286 阅读 · 0 评论 -
汇编-字符串判回文
data segment str db 'abcdefgtegfedcba' len equ $-str msg1 db 'Yes$' msg2 db 'No$'data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax ;--------------- mov bx,off原创 2017-06-23 16:26:45 · 2565 阅读 · 0 评论 -
汇编-十六进制转二进制输出
data segment binval dw 0B39hdata endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax ;--------------- mov bx,binval mov cx,16LP1: rol bx,1 mov dl,0 adc dl,30h m原创 2017-06-23 16:37:50 · 5948 阅读 · 0 评论 -
标志寄存器
1、进位标志CF(Carry Flag) 如果有进位或借位,其值为1,否则为02、奇偶标志(Parity Flag) 最低8位中“1”的个数为偶数,则为1,否则为03、辅助进位标志AF(Auxiliary Carry Flag) 在字操作时,发生低字节向高字节进位或借位,或者在字节操作时,发生低4位向高4位进位或者借位,则AF的值被置为1,否则其值为04、零标志ZF(Zero Flag) 结原创 2017-06-11 20:44:01 · 345 阅读 · 0 评论 -
汇编-十六进制输入输出
data segment ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h ;0~9的ASCII码 db 41h,42h,43h,44h,45h,46h ;A~F的ASCII码 hex db 06h,0fh,0eh,08h ;任意设定一个待转换的一位16进制数data endscode segment原创 2017-06-23 11:39:56 · 3200 阅读 · 0 评论 -
汇编-十进制输入输出
data segmentinfo1 db 0dh,0ah,'input a decimal number:$'info2 db 0dh,0ah,'output a decimal number:$'data endscode segment assume cs:code,ds:datamain proc far call decibin call binidec call原创 2017-06-23 10:18:07 · 4690 阅读 · 0 评论 -
80X86计算机组织
1、存储单元的地址和内容:存储器以字节(8 bit)为编程单位每个字节单元都有唯一的地址编码地址用无符号整数来表示(编程用十六进制表示)一个字要占用相继的两个字节低位字节存入低地址,高位字节存入高地址字单元地址用它的低地址来表示机器以偶地址访问(读 /写)存储器2、物理地址 = 16×段地址 + 偏移地址 3、中央处理器 CPU组成:算术逻辑部件ALU、控制器、寄存器 8086原创 2017-05-24 13:41:43 · 494 阅读 · 0 评论 -
80x86的寻址方式
1、指令系统 一组指令的集合 操作码 操作数……操作数 2、寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式 3、8086的寻址方式立即寻址 MOV AX , 3069H 寄存器寻址 MOV AL , BH 直接寻址 MOV AX , [ 2000H ] 寄存器间接寻址 MOV AX , [ BX ]寄存器相对寻址 MOV AX ,COUN原创 2017-05-24 13:56:50 · 889 阅读 · 0 评论 -
80x86的指令系统(一)
1、数据传送指令:通用数据传送指令 MOV、PUSH、POP、XCHG 累加器专用传送指令 IN、OUT、XLAT 地址传送指令 LEA、LDS、LES 标志寄存器传送指令 LAHF、SAHF、PUSHF、POPF 类型转换指令 CBW、CWD2、MOV DST, SRC 注意: * DST、SRC 不能同时为段寄存器 MOV DS,原创 2017-05-24 20:49:05 · 1704 阅读 · 0 评论 -
80x86的指令系统(二)
1、逻辑指令: 逻辑运算指令 AND、OR、NOT、XOR、TEST 移位指令 SHL、SHR 、 SAL 、SAR、 ROL、ROR、RCL、RCR2、逻辑运算指令 逻辑非指令:NOT OPR 执行操作: (OPR) <— (OPR) * 不影响标志位 * OPR不能为立即数 逻辑与指令:AND DST, SRC 执行操作: (DST) <—原创 2017-05-24 21:44:35 · 671 阅读 · 0 评论 -
汇编语言的程序格式
1、 程序运行步骤及生成的文件 编辑程序->汇编程序->连接程序2、伪操作(伪指令)Directives 伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。处理器选择伪操作段定义伪操作 程序开始和结束伪操作 数据定义及存储器分配伪操作 表达式赋值伪操作 地址计数器与对准伪操作 基数原创 2017-06-02 12:52:05 · 9081 阅读 · 0 评论 -
汇编-输入小写字母用大写字母显示
START: MOV AH,1INT 21HCMP AL,'a'JB RET1CMP AL,'z'JA RET1SUB AL,20HMOV DL,ALMOV AH,2INT 21HJMP STARTRET1: RET原创 2017-06-22 16:37:38 · 1685 阅读 · 0 评论 -
汇编-判断素数
data segment Val dw 100 msg1 db 'Yes$' msg2 db 'No$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov bx,Val call judge原创 2017-06-23 07:00:42 · 3491 阅读 · 0 评论 -
汇编-统计字符串中大写字母的个数(小于10个)
data segment String db 'Hello The World!' String2 db '$' x1 db 0 x2 db 0 x3 db 0 x4 db 0data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,原创 2017-06-23 09:50:23 · 3936 阅读 · 0 评论 -
汇编-求和
data segment array dw 1,2,3,4 sum dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax ;--------------- mov cx,4 mov ax,0LP: add ax,[bx] inc bx loop LP原创 2017-06-23 17:24:11 · 3447 阅读 · 0 评论