3.数值显示-汇编语言(王爽)-实验10 编写子程序
2017-08-01 17:50
375 查看
jcxz跳转后,紧随其后的代码不会执行,要特别注意出栈入栈是否匹配
; e10_3.asm assume cs:code,ss:stack,ds:data data segment db 16 dup (0) data ends stack segment db 64 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,64 mov ax,12666 mov bx,data mov ds,bx mov si,0 ; set ds:[si] call dtoc mov dh,8 mov dl,3 mov cl,2 call show_str mov ax,4c00h int 21h dtoc: push ax push bx push cx push dx push ds push si push di ; to record the digits to output mov di,0 mov bx,10 ; set divisor s_dtoc: mov dx,0 ; set (dx),(ax) div bx ; [(dx) * 10000h + (ax)] / 10 ; result (dx) = remainder, (ax) = quotient add dx, 30h push dx ; save the remainder to stack inc di push cx mov cx,ax jcxz ok_dtoc ; to see if quotient (ax) = 0 pop cx ; this wouldn't be excuted when (ax) = 0 inc cx ; (cx) = (cx) - 1 after loop s loop s_dtoc ok_dtoc: pop cx mov cx,di s1_dtoc: pop dx mov ds:[si], dl ; (dx) < 10 + 30H inc si loop s1_dtoc pop di pop si pop ds pop dx pop cx pop bx pop ax ret show_str: push c 4000 x push dx push ds push si push ax push es push bp push di mov ax,0b800h mov es,ax mov al,160 mul dh mov bp,ax mov al,2 mul dl mov di,ax s: push cx mov ch,0 mov cl,ds:[si] jcxz ok pop cx mov al,ds:[si] mov es:[bp+di],al mov es:[bp+di+1],cl add di,2 inc si inc cx loop s ok: pop cx pop di pop bp pop es pop ax pop si pop ds pop dx pop cx ret code ends end start
相关文章推荐
- 汇编语言 第三版 王爽 实验10-1 编写子程序 之 显示字符串
- 汇编语言(王爽)--实验10编写子程序
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 王爽 汇编语言 第三版 实验10 编写子程序
- 2.解决除法溢出问题-汇编语言(王爽)-实验10 编写子程序
- 汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来
- 汇编语言 第三版 王爽 实验10 显示字符串 show_str 独立完成
- 王爽 汇编语言 实验十 2、数值显示
- 汇编语言 王爽 实验十 数值显示
- 汇编语言(王爽)实验十 编写子程序
- 汇编语言(王爽)--实验11 编写子程序
- 王爽《汇编语言》实验10:编写子程序divdw 解答
- 汇编语言--王爽--实验9 子程序
- ***汇编语言 实验16 编写包含多个功能子程序的中断例程
- 王爽《汇编语言》实验10:编写子程序divdw 解答
- 汇编语言----实验16--编写包含多个功能子程序的中断例程
- 汇编语言编写十进制数到二进制数的进制转换并显示的子程序
- 【汇编语言】王爽第三版----------------实验10-3
- 王爽汇编实验10 子程序3例
- 汇编语言 第三版 王爽 实验12 编写0号终端的处理程序