王爽老师汇编语言的一个小错误
在书本的P306页,关于字符串的输入里,有一段代码其中我觉得错了一个字符,如果大虾们都觉得错的话请回帖告诉我一声{:5_102:},代码如下,红色字体为我认为错误的charstack:jmp short charstart table dw charpush,charpop,charshowtopdw 0 ;栈顶(字符地址、个数记录器) charstart:push bx push dx push di push es cmp ah,2 ;判断ah中的功能号是否大于2 ja sret ;功能号>2,结束 mov bl,ah mov bh,0 add bx,bx ;计算对应子程序在table表中的偏移 jmp word ptr table ;调用对应的功能子程序 charpush:mov bx,top mov ,al inc top jmp sret charpop:cmp top,0 je sret ;栈顶为0(无字符),结束 dec top mov bx,top ;//保存数据,其它作用不详 mov al, ;//保存数据,其它作用不详 jmp sret charshow:mov bx,0b800h mov es,bx mov al,160 mov ah,0 mul dh ;dh*160 mov di,ax add dl,dl ;dl*2 mov dh,0 add di,dx ;di=dh*160+dl*2,es:di指向显存 mov bx,0 ;ds:指向字符串首地址 charshows:cmp bx,top ;判断字符栈中字符是否全部显示完毕 jne noempty ;top≠bx,有未显示字符,执行显示 mov byte ptr es:,' ';显示完毕,字符串末加空格 jmp sretnoempty:mov al, ;字符ASCII码赋值al mov es:,al ;显示字符 mov byte ptr es:,' ';字符串末加空格 inc bx ;指向下一个字符 add di,2 ;指向下一显存单元 jmp charshows ;这里我觉得应该是jmp charshow,而不是jmp charshows sret: pop es pop di pop dx pop bx ret
页:
[1]