- [somniumchase] 我一运行就说没有数字 01/01 11:44
- [游客] 为什么啊 08/07 15:36
- [游客] 如果想快一些 就改下面这里 dx值改成1H delay: push ax 04/19 02:53
- [lshhjx] 注释在程序中很重要,楼主不知道吗? 12/08 13:40
- [biaggi] 看不明白,在下還須學習 11/06 08:11
- [游客] 我运行的时候直接显示Unkown filename跳出了- -请问怎么改 06/16 21:44
- [游客] 勿庸置疑,注释是好习惯。与人方便自己方便。 04/12 10:33
- [游客] 老实说,看着真心累呀! 04/07 18:37
- [游客] 很无语,初学者就多看书,不要动不动要别人注释,基础打好了,再自己注释,这样比别人帮你注释好得多 12/17 19:43
- [dgkepu] 初学者:不懂,希望有多点注释带着学习学习! 12/07 20:52
- [游客] windows 7是一个64Bit操作系统,它不兼容DOS,无法识别16Bit系统。重装系统wind 02/28 21:05
- [游客] windows 7是一个64Bit操作系统,它不兼容DOS,无法识别16Bit系统。重装系统wind 02/28 21:05
- [466987333] 你好,高手,我想请教一个问题。 我用的是win7操作系统,32位的,里面没有找masm目录,是不是 12/12 17:30
- [lanfioncc] 那个太高级了。。。我还有点看不懂。。不过谢谢!!! 11/27 11:23
- [yc2010] 实验16中的 table: dw sub1,sub2,sub3,sub4 可不可以改成呢? 09/11 09:08
- [yc2010] mov bl,ah mov bh,0 add bx,bx ----------->这里为 09/07 21:03
- [yc2010] 为什么要add bx,bx呢? 09/07 20:55
- [yc2010] 那是不是像table[bx],ds[bx]....等(内存单元)都是表示一个字节呢? 09/06 21:10
- [masmaster] 杨季文的《80X86汇编语言程序设计教程》 09/01 12:52
- [游客] to masmaster shl左移4位,那al传进来的4,5,6位背景色不就没了. 为什 09/01 11:00
[2010-09-23 11:50] 习题5.33
写一个程序判断屏幕上是否显示字符串“AB”。在屏幕的最低行显示提示信息。
答:
;----------------------------------------------------;
assume cs:code,ds:data,ss:stack
data segment
_str db 'A','B'
buff db 0,0
msg1 db 'Found:$'
data ends
stack segment stack
db 128 dup (0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ah,2
mov bh,0
mov dx,0
int 10h
mov cx,25*80
s:
mov ah,8
int 10h
mov buff,al
inc dl
mov ah,2
int 10h
mov ah,8
int 10h
mov buff+1,al
cmp dl,79
ja newline
mov ax,word ptr _str
cmp ax,word ptr buff
jz ok
dec cx
jcxz over
jmp s
newline:
inc dh
mov dl,0
mov ah,2
int 10h
dec cx
jcxz over
jmp s
ok:
push dx ;colum=dh,row=dl
mov ah,2
mov dh,24
mov dl,0
int 10h
mov dx,offset msg1
mov ah,9
int 21h
pop ax
xchg ah,al
push ax
and ax,0ffh
call show
mov dl,','
mov ah,2
int 21h
pop ax
mov cl,8
rol ax,cl
and ax,0ffh
call show
over:
mov ah,4ch
int 21h
;
show proc
mov cx,10
xor dx,dx
div cx
push dx
mov dl,al
add dl,30h
mov ah,2
int 21h
pop dx
add dx,30h
mov ah,2
int 21h
ret
show endp
;
code ends
end start
;----------------------------------------------------;
答:
;----------------------------------------------------;
assume cs:code,ds:data,ss:stack
data segment
_str db 'A','B'
buff db 0,0
msg1 db 'Found:$'
data ends
stack segment stack
db 128 dup (0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ah,2
mov bh,0
mov dx,0
int 10h
mov cx,25*80
s:
mov ah,8
int 10h
mov buff,al
inc dl
mov ah,2
int 10h
mov ah,8
int 10h
mov buff+1,al
cmp dl,79
ja newline
mov ax,word ptr _str
cmp ax,word ptr buff
jz ok
dec cx
jcxz over
jmp s
newline:
inc dh
mov dl,0
mov ah,2
int 10h
dec cx
jcxz over
jmp s
ok:
push dx ;colum=dh,row=dl
mov ah,2
mov dh,24
mov dl,0
int 10h
mov dx,offset msg1
mov ah,9
int 21h
pop ax
xchg ah,al
push ax
and ax,0ffh
call show
mov dl,','
mov ah,2
int 21h
pop ax
mov cl,8
rol ax,cl
and ax,0ffh
call show
over:
mov ah,4ch
int 21h
;
show proc
mov cx,10
xor dx,dx
div cx
push dx
mov dl,al
add dl,30h
mov ah,2
int 21h
pop dx
add dx,30h
mov ah,2
int 21h
ret
show endp
;
code ends
end start
;----------------------------------------------------;
评论次数(0) |
浏览次数(609) |
类型(汇编习题集) |
收藏此文 |