@2017libin
2019-06-30T16:03:38.000000Z
字数 1866
阅读 105
汇编
data segment;数据段定义data endscode segmentassume cs:code, ds:datastart: mov ax,datamov ds,ax;代码段定义mov ah,4ch ;程序执行结束,返回DOS界面int 21hcode endsend start;普通子程序定义子程序名 PROC...ret ;程序返回子程序名 EDNP;中断服务子程序定义子程序名 PROC...iret ;中断子程序返回,注意和普通子程序的ret区分子程序名
;数据传送MOV ;记住七种不合格指令OFFSETPOP/PUSH ;堆栈操作指令IN al/ax, i8/dx ;读IO端口,端口号为i8/dx,两种寻址方式分别为直接寻址和寄存器间接寻址OUT i8/dx, al/ax ;写IO端口;数值运算NEG r/m ;取反指令,相当于正负转换ADDADC ;带进位加法SUBCMP dest,src ;结果不送回,但影响标志位INC ;自增,影响除了cf以外的标志位DEC;位操作指令ANDORXORTEST;允许和禁止可屏蔽中断STI ;允许CLI ;禁止;移位指令SHL ;逻辑左移,reg/mem左移1/cl位,最低位补零,最高位进入cfSHR ;逻辑右移,reg/mem右移1/cl位,最高位补零,最低位进入cfROL ;不带进位的循环左移ROR ;不带进位的循环右移;跳转指令JMP ;无条件跳转LOOP ;循环JC ;有进位或者借位,常和CMP连用JE/JZ ;等于零(相等),常和TEST以及CMP连用call ;中断子程序的调用9 dup(0) ;重复写9个0
;无符号数比较BELOW,ABOVEJBJNB;有符号数比较GREATER,LESSJLJNLXCHG ;交换指令XLAT ;[al+bx]->al
data segmentbuf db 10,11,12b1 dw 10,seg buf, buf ;后面这两个到底写了什么?data ends