. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  王爽《汇编语言》第2版实验13(1)用int 7ch中断显示用0结束的字符串  [待解决] 回复[ 1次 ]   点击[ 785次 ]  
chinaljg
[帖 主]   [ 发表时间:2011-02-08 21:06 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:0
注册日期:2011-01-04 11:04
assume cs:code 
data segment 
        db "welcome to masm! ",0 
data ends 
code segment 
start:        mov dh,10 
        mov dl,10 
        mov cl,2 
        mov ax,data 
        mov ds,ax 
        mov si,0 
        int 7ch 
         
        mov ax,4c00h 
        int 21h 
         
code ends 
end start 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;编写并安装int 7ch中断例程, 
;功能为显示一个用0结束的字符串, 
;中断例程安装在0:200处 
;参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si指向字符串首地址. 
assume cs:code 
code segment 
start: 
        mov ax,cs 
        mov ds,ax 
        mov si,offset display_string 

        mov ax,0 
        mov es,ax 
        mov di,200h 

        mov cx,offset display_string_end - offset display_string 
        cld 
        rep movsb 

        mov ax,0 
        mov es,ax 
        mov word ptr es:[7ch*4],200h 
        mov word ptr es:[7ch*4+2],0 

        mov ax,4c00h 
        int 21h 
display_string: 
        push ax 
        push bx 
        push cx 
        push dx 
        push ds 
        push si 
        push es 
        push di 

        mov al,160 
        mul dh 
        mov  bx,ax 
        mov ax,2 
        mul dl 
        add bx,ax 
        add bx,0a0h 
        mov di,bx 
        mov ax,0b800h 
        mov es,ax 
display_string_s: 
        cmp byte ptr ds:[si],0 
        je display_string_ok 

        mov al,ds:[si] 
        mov es:[di],al 
        mov es:[di].1,cl 
        add di,2 
        inc si 
        jmp short display_string_s 
         
display_string_ok: 
        pop di 
        pop es 
        pop si 
        pop ds 
        pop dx 
        pop cx 
        pop bx 
        pop ax 
        iret 
display_string_end: 
        nop 
code ends 
end start 
;;;;;;;;;;;;;向大家学习;;;;;;;;;;;;;;;;;;;;;
michael1947
[第1楼]   [ 回复时间:2011-03-29 09:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-16 22:23
要求不是让但不跟踪吗?观察int、iret指令执行前后cs、ip和栈中的状态了吗?没发现问题吗?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved