|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zhihuzheye 于 2014-11-12 20:04 编辑
《PC机汇编语言实战精解》P95中的代码难以理解并且有错误,自己写了个与大家分享!
data segment
msg db 'hello world!', 0
data ends
code segment
assume cs:code, ds:data
main proc far
mov ax, data
mov ds, ax
mov ax, offset msg
push ax
call disp
mov ax, 4c00h
int 21h
main endp
disp proc near
push bp
mov bp, sp
mov bx, [bp + 4]
cmp byte ptr [bx + 1], 0
jz disp_char
inc bx
push bx
call disp
disp_char:
mov bx, [bp + 4]
mov dl, byte ptr [bx]
mov ah, 2
int 21h
mov sp, bp
pop bp
ret 2
disp endp
code ends
end main
以下是原书上的代码,大家对比学习
;data segment
; assume ds:data
;mess db 'Hello world!', 0dh,0ah, 24h
;data ends
;
;code segment
; assume cs:code
;main proc far
; mov ax, data
; mov ds, ax
; mov dx, offset mess
; mov ah, 9
; int 21h
; push dx
; call disp
;
; mov ax, 4ch
; int 21h
;main endp
;
;disp proc near
; push bp
; mov bp, sp
; mov bx, [bp + 4]
; cmp byte ptr [bx + 1], '$'
; jnz not_end
;
; mov dl, byte ptr [bx]
; mov ah, 2
; int 21h
; pop bp
; ret
;
;not_end:
; inc bx
; push bx
; call disp
;
;retn_addr:
; pop bx
; dec bx
; mov dl, byte ptr [bx]
; mov ah, 2
; int 21h
; pop bp
; ret
;disp endp
;code ends
; end main
|
|