ShowStr: ; 显示字符串 push bp mov bp,sp push ax push bx push cx push dx push si push di
mov ax,0b800h mov es,ax xor ax,ax mov dx,[bp+4+4] mov al,160 mul dh mov si,ax mov ah,0 mov al,2 mul dl add si,ax xor di,di mov bx,[bp+4] mov cx,[bp+4+2] st_sh: cmp cx,di je over_sh mov dl,[bx+di] mov es:[si],dl inc si
mov dx,[bp+4+6] mov es:[si],dl inc si inc di jmp st_sh over_sh: pop di pop si pop dx pop cx pop bx
pop ax mov sp,bp pop bp ret start: mov ax,stack mov ss,ax mov sp,2*20 mov ax,data mov ds,ax
mov bx,offset szTest push bx
call sizeof ; 求长度 参数 字符串地址 mov _size,ax mov ax,2h push ax mov ax,405h push ax
push _size mov bx,offset szTest push bx
call ShowStr ; 显示原字符串 参数 字符串地址,字符串长度,行列,文字属性 push _size
mov bx,offset szTest push bx
call ChangeSmallToBig ; 大小写转化 参数 字符串地址,长度 mov ax,2h push ax mov ax,505h push ax
push _size mov bx,offset szTest push bx
call ShowStr ; 显示转化后的字符串 参数 字符串地址,字符串长度,行列,文字属性
mov ax,4c00h int 21h code ends end start
简单模块化了一下 感觉有点像用ASM32来写ASM16的程序 反倒是把小函数给复杂化了
显示字符串函数中 其实没必要加上 那个长度的参数 取每一位 然后test一下就OK
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
人生的价值 不在于你能做什么 而在于你做了些什么
My fourm: www.crackprimer.com
PYG管理团队欢迎您的加入--广泛招募版主
TOP
得周一才能更新 这两天出去玩了
Nisy
PS:使用某些指令时,寄存器的任务是提供给相匹配指令数据,其他时寄存器其实是给我们可用的空间和暂存器,不要让众多的寄存器成为我们的负担。
------------------------------------------------------------------------------------
第九章 和 第十章 是转移指令
UID
2198 精华
69 威望
8662 在线时间
2615 小时 最后登录
2010-12-10
修改IP 或者修改CS和IP的指令称为转移指令
首先来看JMP指令的格式 JMP 之后跟的地址只有三种:REG、标号、内存数据 jmp REG
jmp short ptr 标号 (8位) // 默认的是 short ptr jmp near prt 标号 (16位) jmp far prt 标号 (32位)
jmp word ptr XX // 默认的是 word ptr jmp dword ptr XX
而 XX 是什么呢? 该内存数据就是我们常说的指针
lpsh dw ?
总坛主
sh:
mov lpsh,offset sh ……
jmp word ptr lpsh // 其实也可以写成 jmp lpsh 默认的类型就是 word ptr
条件转移指令都是短转移
================================================
条件转移指令都是短转移,-128到+127 之间
无符号运算转移指令(标志C和Z).
JA/JNBE 不小于或不等于时转移.(意思就是大于则就跳) JAE/JNB 大于或等于转移. JB/JNAE 小于转移. JBE/JNA 小于或等于转移.
有符号运算转移指令 (标志S,O和Z) JG/JNLE 大于转移. JGE/JNL 大于或等于转移. JL/JNGE 小于转移. JLE/JNG 小于或等于转移.
================================================
JE/JZ 等于转移. JNE/JNZ 不等于时转移. JC 有进位时转移. JNC 无进位时转移. JO 溢出转移. JNO 不溢出时转移. JNP/JPO 奇偶性为奇数时转移. JP/JPE 奇偶性为偶数时转移. JNS 符号位为 \时转移. JS 符号位为 \时转移.
================================================
循环控制指令(短转移)

