黄季珍 12组作业

发布 2022-08-30 16:42:28 阅读 9476

《微型计算机原理及应用》作业。

作业组别:第十二组。

班级:09级车辆工程一班。

姓名:黄季珍。

学号:0901***

作业指导教师:李艳文。

作业完成时间:2023年4月27日。

十二组题。13、内存中source处存放着10个0~9之间的数字的ascii码或空白符(sp)的ascii码。要求将0~9之间的数字的ascii码转换为相应的八位二进制数,并将空白符(sp)的ascii码转换为$字符的ascii码。

处理结果存放到result处。

67.把在bx寄存器对中的恶6位带符号二进制数转换为十进制数,且把符号位及各位十进制码转换为相应的ascii码,放到自data开始的7个储存单元中,最后填以空格。

82.编写子程序。用给定的字,填充一指定的内存区域,该内存区域的起始位置位于di中,需填充的内存单元个数位于cx中。主程序调用子程序实现上述功能。

13题程序。

model small

stack 100

datasource db 20h, 30h, 31h, 33h, 35h, 20h, 39h, 38h, 37h, 34h

count equ $-source

result db count dup (?

codestart: mov ax,@data

mov ds,ax

mov si,offset source

mov di,offset result

mov cx,count

again: mov al,[si]

cmp al,20h

ja again1

cmp al,25h

jb again2

again1: sub al,30h

mov [di],al

inc si

inc di

loop again

jmp done

again2: mov al,24h

mov [di],al

inc si

inc di

loop again

jmp done

done :

mov ax,4c00h

int 21h

end start

67题程序。

.model small

.stack

.datadb 7 dup("

.codestart: mov ax,@data ;程序开始点。

mov ds,ax ; 设置ds指向数据段地址。

mov ax,1234h ;ax=1234h;表示有符号二进制数。

mov di,0将di清零。

test ax,1234h

mov data,'+

jns plus利用符号标志sf=1,若是”+”则进行plus

and ax,07fffh ; 将二进制数转换成十进制说。

mov data,'-

jia: cwd符号扩展。

mov bx,10 ;bx=10

idiv bx有符号数除法。

add dx,0030h ;将十进制数转换成相应的ascii码,dx=0031h

push dx将dx内容堆入栈顶,保护寄存器数值。

inc didi依次加1

cmp ax,0 ;将ax和0比较。

jz done标志位zf=1,程序转移。

loop jia ; 循环jia

done: mov ax,di ; 将di的数值送给ax

mov cx,ax ;将ax的数值送给cx

mov si,1si=1

storage: pop dx恢复使用到的寄存器的数值。

mov data[si],dl

inc sisi依次加1

loop storage ;循环storage

mov ax,4c00h

int 21h; ;程序结束点,返回dos

code ends**段结束。

end start

82.题程序。

model small

stackdata

count =10

stall db count dup(0)

codestart: mov ax,@data ;程序开始点。

mov ds,ax ; 设置ds指向数据段地址。

mov es,ax ; 将ax内容送给附加段es

call htoasc ; 调用子程序。

mov ax,4c00h

int 21h ;程序结束点,返回dos

htoasc proc

mov ax,'aa' ;将字符串aa的ascii码送给ax

mov di,offset string ;将内存string的初始地址放在di中。

mov cx,200将需填充的内存单元个数放在cx中。

rep stosw填充在string的内存区域。

ret子程序返回。

htoasc endp子程序结束。

code ends

end start