王爽 汇编语言 实验十 汇编子程序设计
2010-12-28 20:48
309 查看
子程序1:显示字符串
子程序2:解决除法溢出的问题
子程序3:数值显示(word转字符串)
子程序3加强版:32位数值转字符串
assume cs:code
data segment db'100000000',0 data ends code segment start: mov dh , 2 mov dl , 5 mov cl , 2 mov ax , data mov ds , ax mov si , 0 call show_str mov ax , 4c00h int 21h
;名称:show_str ;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串 ;参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),(cl)=颜色,ds:si指向字符串的首地址 ;返回:无 show_str: push ax push bx push cx push dx push si push bp push di push es mov al , dh;行号 add al , 1 mov bl , 0a0h mul bl mov dh , 0 sub dx , 1; add dx , dx;因为一个字符占两个字节 add ax , dx;把dl中的列号加在ax中 mov di , ax;di放屏幕显示的初始位置 mov ah , cl;ax 要显示的字符和颜色 mov ch , 0;cx 确定循环的条件 mov bx , 0b800h mov es , bx;es显示的地址 mov bp , 0;显示地址的游标 s_showstr: mov cl , ds:[si] mov al , ds:[si] jcxz retseg mov es:[di+bp] , ax inc si add bp , 2 loop s_showstr retseg: pop es pop di pop bp pop si pop dx pop cx pop bx pop ax ret code ends end start
子程序2:解决除法溢出的问题
assume cs:code code segment start: mov ax , 2h mov dx , 2h mov cx , 0ah call divdw mov ax , 4c00h int 21h
;名称:divdw ;功能:进行不会溢出的除法运算,被除数为dword型,除数为word型,结果为dword型 ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,(cx)=除数 ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数 ;X/N = int(H/N)*65536 +[rem(H/N)*65536+L]/N divdw: dataseg_divdw segment db 100 dup(0) ;存放参数 db 100 dup(0) ;存放结果和中间变量 dataseg_divdw ends push bx push es mov bx , dataseg_divdw mov es , bx mov es:[0] , ax ;L mov es:[2] , dx ;H mov es:[4] , cx ;N mov dx , 0 mov ax , es:[2] ;计算 H/N , dx:ax / cx div word ptr es:[4] mov es:[100] , ax ;结果dx mov ax , es:[0];[rem(H/N)*65536+L]/N ren是余数 div word ptr es:[4] mov es:[102] , ax ;结果ax mov es:[104] , dx ;结果cx mov dx , es:[100] mov ax , es:[102] mov cx , es:[104] pop bx pop es ret code ends end start
子程序3:数值显示(word转字符串)
assume cs:code data segment db 10 dup(0) data ends code segment start: mov ax , 10000 mov bx ,data mov ds , bx mov si , 0 call dtoc mov dh , 8 mov dl , 3 mov cl , 2 call show_str ; 子程序1实现 mov ax , 4c00h int 21h ;名称:dtoc ;功能:将word型数据转变为表示十进制的字符串,字符串以0为结尾符。 ;参数:(ax)=word型数据,ds:si指向字符串的首地址 ;返回:无 dtoc: dataseg_dtoc segment db 100 dup(0) ;存放参数和寄存器值 db 100 dup(0) ;存放结果和中间变量 dataseg_dtoc ends push bx push es push dx push cx push di mov bx , dataseg_dtoc mov es , bx mov es:[0] , ax mov es:[2] , ds mov es:[4] , si mov bx , 10 mov di , 0 mov ax , es:[0] s: mov dx , 0 div bx mov cx , ax add dl , 30h mov byte ptr es:[100+di] ,dl inc di jcxz getCount mov cx , 2 ; 当商为1的时候cx-- , 就为1了,就会跳出循环 loop s getCount: mov cx , di mov ds , es:[2] mov si , es:[4] reverse: mov bl , es:[99+di] mov ds:[si] , bl inc si dec di loop reverse mov byte ptr ds:[si] , 0 mov ds , es:[2] mov si , es:[4] pop di pop cx pop dx pop es pop bx ret code ends end start
子程序3加强版:32位数值转字符串
assume cs:code data segment db 20 dup(0) data ends code segment start: mov dx , 0 mov ax , 10 mov bx ,data mov ds , bx mov si , 0 call dtocex mov dh , 8 mov dl , 3 mov cl , 4 call show_str ;子程序1实现 mov ax , 4c00h int 21h ;名称:dtocex ;功能:将dword型数据转变为表示十进制的字符串,字符串以0为结尾符。 ;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,ds:si指向字符串的首地址 ;返回:无 dtocex: dataseg_dtocex segment db 100 dup(0) ;存放参数和寄存器值 db 100 dup(0) ;存放结果和中间变量 dataseg_dtocex ends push bx push es push di push cx mov bx , dataseg_dtocex mov es , bx mov es:[0] , ax mov es:[2] , ds mov es:[4] , si mov es:[6] , dx mov di , 0 mov ax , es:[0] dtocex_s: mov cx , 10 call divdw;dx:ax / cx = dx:ax~cx;子程序二实现 add cl , 30h mov byte ptr es:[100+di] ,cl inc di cmp dx , 0 je dxisz jmp dtocex_s dxisz: cmp ax , 0 jne dtocex_s mov cx , di mov ds , es:[2] mov si , es:[4] dtocex_reverse: mov bl , es:[99+di] mov ds:[si] , bl inc si dec di loop dtocex_reverse mov byte ptr ds:[si] , 0 mov ds , es:[2] mov si , es:[4] pop cx pop di pop es pop bx ret code ends end start
相关文章推荐
- 汇编语言(王爽)--实验10编写子程序
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 汇编语言(王爽)实验十 编写子程序
- 王爽 汇编语言 实验十 课程设计1
- 8086汇编学习小记-王爽汇编语言课程实验15及课程设计2的DOS环境
- 3.数值显示-汇编语言(王爽)-实验10 编写子程序
- 2.解决除法溢出问题-汇编语言(王爽)-实验10 编写子程序
- 汇编语言(王爽)--实验11 编写子程序
- 王爽 汇编语言 第三版 实验10 编写子程序
- 汇编语言--王爽--实验9 子程序
- 汇编语言 第三版 王爽 实验10-1 编写子程序 之 显示字符串
- 王爽 汇编语言 实验7 寻址方式在结构化数据访问中的应用,用栈实现
- 王爽汇编语言第五章学习笔记和实验四答案
- 课程设计1 -------------- 王爽 汇编语言
- 汇编语言(王爽 第三版)实验十三
- 【汇编语言】王爽第三版----------------实验9
- 王爽 -- 汇编语言课程设计2一些问题记录
- 汇编语言-王爽-第八章实验7
- 王爽汇编语言课程设计1
- 王爽 汇编语言 实验七