INT21H系统功能调用 2.用汇编实现下列C功能: 不拘一格,灵活 000非 使用1/2/9/10号 char s16; printf("In What is your name?); int21h功能调用! scant(“%s”,s); printf("InMy name is %osIn",S); 要求:修改上述编写好的程序,将自己的名字倒序输出: 如: What is your name? YangMing My name is WangHong My name is gnoHgnaw 3.自己验证课本或手册中有关功能调用的程序例子
INT 21H系统功能调用 2. 用汇编实现下列C功能: …… char s[16]; printf(“\nWhat is your name? ”); scanf(“%s”,s); printf(“\nMy name is %s\n”,s); …… 不拘一格,灵活 使用1/2/9/10号 int 21h功能调用! 要求: 修改上述编写好的程序,将自己的名字倒序输出: 如:What is your name? YangMing My name is WangHong My name is gnoHgnaW 3. 自己验证课本或手册中有关功能调用的程序例子
三.各种进制数的显示 1.十进制数的显示(09) 编程步骤:(显示缓冲区应存放显示字符串 的ASCI码) 1)拆字—将字节拆成低半字节和高半字节 2)变字符—将低半字节和高半字节分别加 30H转换成ASCI码字符 3)按从左至右的显示顺序将字符依次存入显 示缓冲区 4)采用9号功能调用显示
编程步骤: (显示缓冲区应存放显示字符串 的ASCII 码) 1)拆字—— 将字节拆成低半字节和高半字节 2)变字符—— 将低半字节和高半字节分别加 30H转换成ASCII 码字符 3)按从左至右的显示顺序将字符依次存入显 示缓冲区 4)采用9号功能调用显示 三. 各种进制数的显示 1.十进制数的显示(0—9)
例2.2-1:将字变量W中的BCD数以十进制形式 显示在屏幕上。 stack segment stack stack dw 32 dup(?) stack ends w0034|<口 data segment 0001H12<H W DW 1234H 000H00< OBUF DB4DUP(?),’$ 0003H00 data ends OBUF 0004H 00 code segment 000500<L 0003H24
例2.2-1:将字变量W中的BCD数以十进制形式 显示在屏幕上。 stack segment stack 'stack' dw 32 dup (?) stack ends data segment W DW 1234H OBUF DB 4 DUP(?),'$' data ends code segment 0000H 34 0001H 12 0002H 00 0003H 00 0004H 00 0005H 00 0003H 24 W OBUF L H H L $
begin proc far assume ss: stack. cs: code. ds: data push ds W→D100034<L mov ax, 0 000112<H push ax OBUF mov ax. data 000H00<H mov ds. ax 0003H00 OBUF+3 MOV CX. 02 0004H00 →SI MOV DI OFFSET W 0005H00< MOV SI OFFSET OBUF +3 0006H24<s
begin proc far assume ss:stack,cs:code,ds:data push ds mov ax,0 push ax mov ax,data mov ds,ax MOV CX,02 MOV DI,OFFSET W MOV SI,OFFSET OBUF+3 0000H 34 0001H 12 0002H 00 0003H 00 0004H 00 0005H 00 0006H 24 W→DI OBUF+3 → SI L H H L $ OBUF
AB:MOAL, BYTE PTR[DI];将[DI→AL PUSH CX MOV AH AL AND AL,OFH;屏蔽高四位,保留低四位 ADD AL,3OH;变ASC码字符 MOV[SI,AL;低半字节ASCI码字符→{S DEC SI AND AH,OFOH;屏蔽低四位,保留高四位 MOV CL,4;右移四位 SHR AH. CL 将高四位→低四位 ADD AH,3OH;变ASCI码字符
AB: MOV AL,BYTE PTR [DI] ;将[DI]→AL PUSH CX MOV AH,AL AND AL,0FH ;屏蔽高四位,保留低四位 ADD AL,30H ;变ASCII 码字符 MOV [SI],AL ;低半字节ASCII 码字符→[SI] DEC SI AND AH,0F0H ;屏蔽低四位,保留高四位 MOV CL,4 ;右移四位 SHR AH,CL 将高四位→低四位 ADD AH,30H ;变ASCII 码字符