王爽<汇编语言>实验十
2014-12-18 21:55
309 查看
实验十 3.数值显示(以下程序附带测试程序)
;名称: dtoc ;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾 ;参数: (ax)=dword型数据低字 ; (dx)=dword型数据高字 ; ds:si指向字符串的首地址 ;返回: 无 assume cs:code data segment haha dd 4294967295 tata dd 16 dup(?) data ends code segment main: mov ax,data mov ds,ax mov si,offset haha mov ax,[si] add si,2 mov dx,[si] mov si,offset tata call dtoc mov dh,12 mov dl,30 mov cl,1 mov si,offset tata call show_str mov ax,4c00h int 21h dtoc: push bx push cx push si mov bx,0 ;bx 用于记录最终的位数 r: mov cx,10 call divdw push cx ;计算余数,商,余数保存入栈 inc bx ;位数增加 cmp dx,0 jnz next cmp ax,0 jz ok ;商为0,则跳出r循环 next: jmp r ok: mov cx,bx s: pop ax add al,30h mov [si],al inc si loop s mov byte ptr [si],0 pop cx pop bx pop si ret divdw: push bx mov bx,ax mov ax,dx mov dx,0 div cx push ax ;将int(H/N)入栈 mov ax,bx div cx ;[rem(H/N)*65536+L]/N结果商放在dx中,余数放在ax中 mov cx,dx pop dx pop bx ret show_str: push cx push bx push ax push dx push ds push es push di ;将要使用到的寄存器入栈 mov ax,0b800h mov es,ax mov al,160 mul dh mov bx,ax ;基址赋值 mov al,2 mul dl mov di,ax ;变址赋值 read: mov ch,[si] cmp ch,0 jz ok2 ;判断是否遇到字符串尾端 mov ah,cl mov al,[si] mov es:[bx+di],ax inc di inc di ;指向下一个屏幕显示位置 inc si ;指向下一个字符 jmp read ok2: pop di pop es pop ds pop dx pop ax pop bx pop cx ;使用到的寄存器出栈 ret code ends end main
相关文章推荐
- 王爽<汇编语言>实验十一 (附测试代码)
- <<汇编语言>>---王爽 (实验 8)分析一个奇怪的程序
- 王爽< 汇编语言>实验十二
- 王爽<<汇编语言>>实验九答案
- 王爽<汇编语言>实验14 访问CMOS RAM 解答(详细注释)
- 王爽<<汇编语言>> 实验十四
- <学习笔记>王爽汇编语言__包含多个段的程序
- <学习笔记>王爽汇编语言__处理数据的两个基本问题
- <学习笔记>王爽汇编语言__寄存器
- <学习笔记>王爽汇编语言__CALL和RET指令
- 学习<<汇编语言 -王爽>>,自已完成的一道实试题 (2)
- 学习<<汇编语言 -王爽>>,自已完成的一道编程题 (7)
- <学习笔记>王爽汇编语言__[BX]和loop指令
- 学习<<汇编语言 -王爽>>,自已完成的一道课程设计题 (5)
- <学习笔记>王爽汇编语言__更加灵活的定位内存地址的方法
- 学习<<汇编语言 -王爽>>,自已完成的一道实试题 (4)
- <学习笔记>王爽汇编语言__转移指令原理
- 学习<<汇编语言 -王爽>>,自已完成的一道实试题 (6)
- <学习笔记>王爽汇编语言__再论寄存器
- 学习<<汇编语言 -王爽>>,自已完成的一道实试题 (3)