Yara 发表于 2012-5-15 22:26:27

王爽老师汇编语言的一个小错误

在书本的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]
查看完整版本: 王爽老师汇编语言的一个小错误