第一道、
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
注释
stack segment stack ;定义堆栈
dw 100 dup(0)
stack ends
data segment ;数据段开始
bin dw 7462
buf db 6 dup(0),0dh,0ah,'$'
ten dw 10
data ends
code segment
assume cs:code,ds:data,ss:stack ;约定寄存器
start: mov ax, data
mov ds,ax
mov ax,bin ;把bin值读入ax
or ax,ax ;对值无影响,影响标志位
jns plus ;SF=0,即为正数时转移到plus
neg ax ;负数的话取负
mov buf,'-' ;把'-'赋给buf第一个字节
jmp next
plus: mov buf,'+' ;把'+'赋给buf第一个字节
next: mov cx,5 ;初始化循环变量
l1: mov dx,0 ;dx清零,为了不影响下面的除法
div ten ;ten是个字类型,所以拿DX:AX表示的32位数除以10
push dx ;把除得余数压栈,为了反向输出
loop l1
mov cx,5 ;循环初始化
lea bx,buf+1 ;把buf+1的偏移地址赋给bx
l2: pop ax ;把依次压进去的余数弹出来
add al,30h ;把数字转换成对应的字符
mov[bx], al ;把转换得来的字节放到bx指向的内存中
inc bx ;bx指针右移一字节
loop l2 ;循环5次
lea dx,buf ;把buf的偏移地址赋给dx
mov ah,9
int 21h ;用9号中断显示字符串
mov ah,4ch
int 21h ;正常退出程序
code ends
end start
程序框图:
饿,,不会画,,,根据注释写出来应该比较容易
功能:
以十进制形式在屏幕上显示bin的值
结果:
+07462
第二道、
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
data segment
num equ 60
p1 db 'string:',0dh,0ah,'$'
p2 db 0ah,0dh,'right-adjusting of string:',0dh,0ah,'$'
string1 db num,0,num dup(' '),0ah,0dh,'$'
string2 db num,0,num dup(' '),0ah,0dh,'$'
strout db num dup(?),num dup(?)
data ends
stack1 segment para stack
stack1 ends
code segment
assume cs:code,ds:data,ss:stack1,es:data
start:
mov ax,data
mov ds,ax
mov es,ax
lea dx,p1
mov ah,9
int 21h ;这3行显示p1指向的字符串
lea dx,string1
mov ah,0ah
int 21h ;这3行调用10号中断向DS:DX内存输入字符串
mov dl,0ah
mov ah,2
int 21h ;换行
lea dx,string2
mov ah,0ah
int 21h ;输入第二行字符串
lea dx,p2
mov ah,9
int 21h ;显示p2字符串
lea di,strout ;strout偏移地址赋给di
lea si,string1+1 ;第一次输入字符串实际输入的字符数
xor cx,cx
mov cl,byte ptr[si] ;循环输入字符串个数次
lp_1:
inc si ;si指针右移1字节
mov al,byte ptr[si]
mov byte ptr[di],al ;这两句实现字符串复制到输出字符串里
inc di ;di右移一字节
loop lp_1
lea si,string2+1 ;这段循环和上面一样,只不过复制string2
xor cx,cx
mov cl,byte ptr[si]
lp_2:
inc si
mov al,byte ptr[si]
mov byte ptr[di],al
inc di
loop lp_2
mov byte ptr[di],'$' ;给字符串末端加上'$'符号
lea dx,strout
mov ah,9
int 21h ;把最终结果输出出来
mov ah,4ch
int 21h ;正常退出
code ends
end start
输出结果:
string:
abcde
123cde
right-adjusting of string:
abcde123cde
好好学习,不要只知道问别人~
节哀