; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 dup()
Dec_ASCII EndP
; -------------------------------------
Start: push cs
pop ds
lea bx,Exit_Proc ;取标号Exit_Proc地址
shr bx,1 ;除以2
mov bx,[bx] ;取指定位置的字数据
mov cx,16 ;字数据,16位
xor ax,ax ;计数器置0,准备计数
clc ;进位标志位复位
@@Counting: shl bx,1 ;左移1位
jnc $+3 ;没有进位,下次循环
inc ax ;有进位,计数
loop @@Counting
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
;X86汇编_用循环结构编程计算阶乘n!
code segment
assume cs:code,ds:code
org 100h
start:
push cs
pop ds
push cs
pop es
Q0:lea dx,Tips
mov ah,9 ;显示提示
int 21h
Q1:mov ah,0
int 16h
cmp al,1bh ;Esc退出
jz exit
cmp al,'0'
jb Q1 ;不是数字重新输入
cmp al,'8';大于8,则产生溢出错误
ja Q1
mov ah,0eh
int 10h
sub al,30h;'0'
or al,al
jnz Q2
mov ax,1 ;0!=1
jmp Q4
Q2:mov ah,0
mov cx,ax
mov al,1
xor dx,dx
Q3:mul cx ;用mul cl算到6!便出错
loop Q3
Q4:cld
lea di,Result
add di,2
lea bp,Table
mov cx,5
Q5:xor dx,dx
div word ptr [bp]
or al,30h
stosb
mov ax,dx
add bp,2
loop Q5
lea dx,Result ;显示计算结果
mov ah,9
int 21h
jmp Q0
exit:
mov ah,4ch
int 21h
Tips db 'Please Input a Number(0-8),Esc to Quit: ',0dh,0ah,'$' ;提示
Table dw 10000,1000,100,10,1
Result db '!=00000',0dh,0ah,'$'
code ends
end start
以上就是关于循环结构设计(汇编语言)编写一个程序,记录某个字存储单元格数据中1的个数,以十进制形式显示结果全部的内容,包括:循环结构设计(汇编语言)编写一个程序,记录某个字存储单元格数据中1的个数,以十进制形式显示结果、用汇编语言如何编写计算n!的程序(利用循环结构程序编写)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)