-104- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
exit: not_fd: main code |
rol push and xlat mov int pop loop mov int mov mov int jmp endp ends end |
ax,1 ax ax,000fh ah,0eh 10h ax outloop ah,4ch 21h dx,offset errmsg ah,09h 21h exit main |
;暂存AX寄存器 ;保留低4位 ;取得对应的ASCII码 ;利用10H中断的0EH功能 ;输出AL中的字符 ;取回AX寄存器 ;处理下一个数位 ;结束程序 |
||||||||||||||||||
程序中并没有使用LODS指令,而是把SI寄存器作为一个可以作间接寻址的一般寄存器应用。如何使用串处理指令解决这个问题呢?请看下面的程序: | |||||||||||||||||||||
data mess ascii errmsg data code main out_cx: outloop: |
segment assume db db db ends segment assume proc mov mov mov mov mov mov repnz jz jmp sub mov mov mov rol rol rol |
ds:data 'Price: $1.00',0dh,0ah,0 '0123456789ABCDEF' 07h,'Character not found!', cs:code far ax,data ds,ax es,ax di,offset mess cx,14 al,'$' scasb out_cx not_found di,offset mess+1 ax,di bx,offset ascii cx,4 ax,1 ax,1 ax,1 |
0dh,0ah,'$' ;字符未找到 ;初始化DS、ES寄存器指向数据段 ;DI寄存器指向字符串MESS ;在14个字符中查找'$' ;要查找的字符是'$' ;扫描字符串 ;找到'$'后转至OUT_CX ;未找到'$'则转至NOT_FOUND ;计算'$'符的偏移位置 ;偏移位置送入AX寄存器 ;BX寄存器指向ASCII表 ;处理4个数位 ;AX寄存器向左循环移4位 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |